前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java基础入门笔记03——用户交互Scanner类,程序三大结构,反编译,增强for,Java中没有goto

Java基础入门笔记03——用户交互Scanner类,程序三大结构,反编译,增强for,Java中没有goto

作者头像
全栈程序员站长
发布2022-09-21 08:18:53
4930
发布2022-09-21 08:18:53
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

流程控制

用户交互Scanner类

  • 实现程序和人的交互
  • java.util.Scanner
  • Scanner 类 获取用户的输入
  1. next() 获取下一个字符
  2. nextLine()获取下一行

next()

以检测到用户输入的空格为结束符,但是一定要读取到有效字符才可以结束,也就是刚开始遇到的空格就会抛弃,而中间遇到空格才会停止。

所以next()不能得到带有空格的字符串

hasNext()

用来检测是否还有下一个输入,返回布尔值

close()

用于使用完毕Scanner对象后,关闭输入流

代码语言:javascript
复制
package scanner;

import java.util.Scanner;

public class Demo01 { 
   
    public static void main(String[] args){ 
   

       //创建一个扫描对象
       // 先new一个Scanner 参数为System.in :
       // new Scanner(System.in); 按alt+enter 自动创建本地变量
        Scanner scanner = new Scanner(System.in);
        System.out.println("使用next()方法接收");
        //输入hello world 只能接收到hello 因为中间有空格

        //判断用户后面还有没有输入字符
        if(scanner.hasNext()==true){ 
   
            //使用next()方法接收
            String str=scanner.next();//输入hello world
            System.out.println("输入内容为"+str);//只能接受到hello
        }

        scanner.close();//用完scanner要关闭,节省资源

        //凡是属于IO流的类要养成用完就关掉的习惯
        }
}

####nextLine();

以检测到用户输入回车enter 为结束符,可以获得空格。

hasNextLine()

用来检测是否还有下一行输入,返回布尔值

代码语言:javascript
复制
package scanner;

import java.util.Scanner;

public class Demo02 { 
   
    public static void main(String[] args) { 
   
        Scanner scanner = new Scanner(System.in);
        System.out.println("使用nextLine()接受");
        if(scanner.hasNextLine()==true){ 
   
            String str=scanner.nextLine();//输入hello world
            System.out.println("输出的内容为:"+str);//接收到hello world
        }

        scanner.close();
    }
}

常规还是用nextLine(),并且一般不用判断是否后面还有数据,用一个字符串对象接收nextLine()获取的值

代码语言:javascript
复制
public class Demo03 { 
   
    public static void main(String[] args) { 
   
        //从键盘接受(可以不判断用户是否还有下一个输入)
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入数据:");

        String str = scanner.nextLine();

        System.out.println("您输入的内容为:\n"+str);

        scanner.close();
    }
}

接受指定类型的数据——nextInt()nextDouble()

代码语言:javascript
复制
package scanner;
import java.util.Scanner;
public class Demo04 { 
   
    public static void main(String[] args) { 
   
		//新建一个扫描器对象
        Scanner scanner=new Scanner(System.in);
        int i=0;
        float f=0.0f;//记住 float 类型要末尾加 f与 double区别

		
        System.out.println("请输入整数:\n");
        //接收一个整数,如果不是整数就不会接收
        if(scanner.hasNextInt()){ 
   
            i=scanner.nextInt();
            System.out.println("整型数据"+i);
        }
        else{ 
   
            System.out.println("你输入的不是整数");
        }
        
		//接收一个单精度浮点数,如果不是就不会接收
        System.out.println("请输入小数:\n");
        if(scanner.hasNextFloat()){ 
   
            f=scanner.nextFloat();//如果此处输入了整数,会自动转换为浮点数
            System.out.println("小数数据"+f);
        }
        else{ 
   
            System.out.println("你输入的不是小数");
        }

 scanner.close();
    }
}

一个小案例: 输入多个数据,计算总和,平均数。每输入一个数字用回车确认,输入非数字结束。

代码语言:javascript
复制
package scanner;
import java.util.Scanner;
public class Demo05 { 
   
    public static void main(String[] args){ 
   
        
        System.out.println("请输入数据");
        Scanner scanner = new Scanner(System.in);

        //求和
        double sum=0;
        //计数
        int m=0;

        //通过循环判断是否还有输入,并对每一次输入进行求和统计
        while(scanner.hasNextDouble()){ 
   
            double x = scanner.nextDouble();
            m++;
            sum=sum+x;//sum+=x
            System.out.println("你已经输入"+m+"个数,当前和为:"+sum+",当前平均值为:"+sum/m);
        }
        System.out.println("你一共输入"+m+"个数");
        System.out.println(m+"个数的和为"+sum);
        System.out.println(m+"个数的平均数为"+sum/m);

        scanner.close();

程序的结构

  • 顺序结构
  • 选择结构(分支结构)
    • if-else
    • if——else if——else if——else if——else (else必须在 else if 之后)
  • switch-case
代码语言:javascript
复制
public class Demo06 { 
   
    public static void main(String[] args){ 
   

        char grade='M';

        switch(grade){ 
   
            case 'A':
                System.out.println("优秀");
                break;
            case 'B':
                System.out.println("良好");
                break;
            case 'C':
                System.out.println("及格");
                break;
            default:
                System.out.println("未知等级");
            case 'D':
                System.out.println("不及格");
                break;
//switch的每种情况顺序是不影响的,程序会自动匹配;
//匹配不到时会选择default
//只有遇到break才退出,不然向下继续执行
//efault中没有break,程序也会继续向下执行
        }
    }
}
  • switch支持String字符串常量匹配——可以用“名字”作为匹配项
  • 字符串的本质还是数字
  • switch后面的括号内只能用常量,不能是变量

反编译

IDEA自带反编译方法

.java——编译后——.class文件(字节码文件)——反编译(使用IDEA)——.java

具体方法如下

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

循环结构——功能:迭代

  • while 用于不知道循环次数,有时候也用于死循环——监听,检查
  • for 用于已知循环次数——最有效,最灵活

要注意程序执行顺序 for(初始化循环变量;条件判断;自增自减){循环体}

  1. 最先初始化(仅第一次)
  2. 然后条件判断
  3. 然后循环体
  4. 最后自增自减,然后下一轮条件判断
  • for(;;)三个参数可以分别没有,也可都没有——死循环

小练习 : 输出1-1000内能被5整除的数,每行仅输出3个

代码语言:javascript
复制
public class Demo08 { 
   
    public static void main(String[] args){ 
   
        for (int i = 0; i < 100; i++) { 
   
            if(i%5==0){ 
   
                System.out.print(i+"\t"); 
                //每输出一个数隔开一个tab
            }
            if(i%5*3==0){ 
      
                System.out.println();
                //没输出三个数,输出一个换行
                //也可以System.out.print("\n");
            }
        }
    }
}

println和print的区别,前者会自动换行


小练习: for循环打印九九乘法表

代码语言:javascript
复制
public class Demo09 { 
   
    public static void main(String[] args) { 
   
        //九九乘法表
        for (int i = 1; i < 10; i++) { 
   
            for(int j= 1;j<=i;j++){ 
   
                System.out.print(j+"*"+i+"="+i*j);
                System.out.print("\t");
            }
            System.out.println();
        }
    }
}

增强for

用于遍历数组、对象

IDEA快捷键——对象.for

格式 for(临时变量类型 变量名 :需要遍历的数组或对象){循环体操作}

代码语言:javascript
复制
public class Demo10 { 
     
    public static void main(String[] args) { 
     
        int[] numbers={ 
     10,20,30,4,50};//数组的定义
        for(int x:numbers){ 
         
            System.out.println(x);
        }
    }
}

判断字符串是否与另一个字符串相等 (仅仅比较值是否相等,不能比较引用)

str.equals(“hello”)


break,continue

  • break——终止循环,退出
  • continue——不执行循环内continue后面的语句,跳过本轮循环,继续下一次循环

goto关键字”在java中的影子 Java中本来没有goto 关键字——用标签来实现跳转,通过continue跳转到指定标签位置(仅作了解——不建议使用)

以下程序再最外层循环设置了标记outer,方便continue跳出

代码语言:javascript
复制
public class Demo11 { 
   
    public static void main(String[] args) { 
   
       outer: for(int i=1;i<20;i++){ 
   
            for(int j=2;j<i/2;j++){ 
   
                if(i%j==0){ 
    //此处求质数的算法再理解一下 备注到下方
                    continue outer;
                }
            }
        }
    }
}

notes: 质数是大于1的自然数中,只能被1和本身整除的数


小练习: 打印如图所示三角形

在这里插入图片描述
在这里插入图片描述
  • 思路:最外层循环控制换行,先打印左边空白倒着的半三角,再打印左边一半的 * 三角,最后打印右边一半的 * 三角。
代码语言:javascript
复制
public class Demo12 { 
   
    public static void main(String[] args) { 
        
        for (int i = 1; i <= 5; i++) { 
   
            for (int j = 5; j >=i; j--) { 
   
                System.out.print(" ");
            }
            for (int j = 1; j <=i; j++) { 
   
                System.out.print("*");
            }
            for (int j = 1; j <=i; j++) { 
   
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

快捷打开window绘图软件 (win+R——mspaint)

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/168488.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 流程控制
    • 用户交互Scanner类
      • next()
        • hasNext()
          • close()
            • hasNextLine()
            • 程序的结构
              • 循环结构——功能:迭代
                • 增强for
                  • break,continue
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档