Scanner对象、进阶与判断浅学

前言

  • 之前我们学的基本语法中我们并没有实现程序和人的交互,但是 Java 给我们提供了这样一个工具类,我们可以获取用户的输入java.util.ScannerJava5 的新特征我们可以通过 scanner 类来获取用户的输入

    • 基本语法代码

      Scanner str = new Scanner(System.in);
      
  • 通过 Scanner next()nextLine() 方法获取输入的字符串,在读取前我们一般需要使用 hasNext()hasNextLine() 判断是否还有输入的数据

  • if、else与while浅学

    • if:如果

      public class Demo04 {
          public static void main(String[] args) {
              int i = 1;
              //如果条件成立,那么i的值改变为2
              if (i == 1){
                  i = 2; //成立 i的值改变为2
              }
          }
      }
      
    • else:否则

      public class Demo04 {
          public static void main(String[] args) {
              int i = 3;
              //如果条件成立,那么i的值改变为2.否则,i的值改变为4
              if (i == 1){
                  i = 2; //不成立,不执行
              }else{ 
                  i = 4; //成立,i的值改变为4
              }
          }
      }
      
    • while:循环判断

      public class Demo04 {
          public static void main(String[] args) {
              int i = 1;
              //如果条件一直成立,那么i的值不变.否则,跳出循环判断结束判断
              while (i == 1){
                  i = 1; //成立,值不变
              }
              /*
              while (i == 1){
                  i = i + 1; //首次判断成立,值+1后为2,第二次不成立,跳出判断结束判断
              }
              */
          }
      }
      

next() 与 nextLine()

  • next()

    • 代码举例

      import java.util.Scanner;
      
      public class Demo01 {
          public static void main(String[] args) {
              //创建一个扫描器对象,用于接收键盘数据
              Scanner scanner = new Scanner(System.in);
      
              System.out.println("请输入数据:");
      
              //判断用户有没有输入字符串
              if (scanner.hasNext()){
                  //使用next方式接收
                  String str = scanner.next();
                  System.out.println("输出的内容为:" + str); //hello
              }
      
              //凡是属于IO流的类不关闭会一直占用资源,要养成好习惯用完就关掉
                  //IO流:与电脑打交道的输入输出类
              scanner.close();
          }
      }
      
    • 返回结果

      请输入数据:
      hello world //自由输入
      输出的内容为:hello //丢失空格之后的字符串(world)
      
      进程已结束,退出代码为 0
      
    1. 一定要读取到有效字符后才可以结束输入
    2. 对输入有效字符之前遇到的空格,next() 方法会自动将其去掉
    3. 只有输入有效字符后才将其后面输入的空格作为分割符或者结束符
    4. next() 不能得到带有空格的字符串
  • nextLine()

    • 代码举例

      import java.util.Scanner;
      
      public class Demo02 {
          public static void main(String[] args) {
              //从键盘接收数据
              Scanner scanner = new Scanner(System.in);
      
              System.out.println("请输入数据:");
      
              //判断是否还有输入
              if (scanner.hasNextLine()){
                  String str = scanner.nextLine();
                  System.out.println("输出的内容为:" + str);
              }
      
              //关闭IO流的类占用
              scanner.close();
          }
      }
      
    • 返回结果

      请输入数据:
      hello world //自由输入
      输出的内容为:hello world //全部接收
      
      进程已结束,退出代码为 0
      
    1. 以 回车键 为结束符,也就是说 nextLine() 方法返回的是输入回车之前的所有字符
    2. 可以接收空格

常用写法举例

  • 代码语法

    import java.util.Scanner;
    
    public class Demo01 {
        public static void main(String[] args) {
            //创建一个扫描器对象,用于接收键盘数据
            Scanner scanner = new Scanner(System.in);
    
            System.out.println("请输入数据:");
    
            //判断用户有没有输入字符串
            if (scanner.hasNext()){
                //使用next方式接收
                String str = scanner.next();
                System.out.println("输出的内容为:" + str); //hello
            }
    
            //凡是属于IO流的类不关闭会一直占用资源,要养成好习惯用完就关掉
                //IO流:与电脑打交道的输入输出类
            scanner.close();
        }
    }
    
  • 返回结果

    请输入数据:
    123 ABC AJun 阿俊学Java
    输出的内容为:123 ABC AJun 阿俊学Java
    
    进程已结束,退出代码为 0
    

Scanner进阶使用

  • 判断两种类型数值

    • 代码举例

      public class Demo04 {
          public static void main(String[] args) {
              Scanner scanner = new Scanner(System.in);
      
              //从键盘接收数据
              int i = 0;
              float f = 0.0f;
      
              System.out.println("请输入整数:");
      
              //如果
              if (scanner.hasNextInt()){ //判断后面输入是否还有整数
                  i = scanner.nextInt(); //接收下一个整数,同为整数型所以可以共用i变量
                  System.out.println("整数数据" + i);
              }else{ //否则
                  System.out.println("输入的不是整数数据");
              }
      
              System.out.println("请输入小数");
      
              //如果
              if (scanner.hasNextFloat()){ //判断后面输入是否还有小数
                  f = scanner.nextFloat(); //接收下一个小数,同为小数型所以可以共用f变量
                  System.out.println("小数数据" + f);
              }else{ //否则
                  System.out.println("输入的不是小数数据");
              }
      
      
              scanner.close();
          }
      }
      
    • 输入正确类型返回结果

      请输入整数:
      1	//自由输入int类型
      整数数据1
      请输入小数
      1.1		//自由输入float类型
      小数数据1.1
      
      进程已结束,退出代码为 0
      
    • 输入错误类型返回结果

      请输入整数:
      1.1		//自由输入错误的类型数值
      输入的不是整数数据	//判断不是int类型
      请输入小数
      小数数据1.1		//接收为float类型
      
      进程已结束,退出代码为 0
      
  • 编写简单的求和与平均值

    • 代码举例

      public class Demo05 {
          public static void main(String[] args) {
              //我们可以输入多个数字,并求其总和与平均数,每输入一个数字回车确认,通过输入非数字来结束输入并输出执行结果
      
              Scanner scanner = new Scanner(System.in);
      
              //和
              double sum = 0;
              //计算输入了多少个数字
              int m = 0;
      
              //通过while循环判断是否还有输入,并在里面对每一次进行求和和统计
              while (scanner.hasNextDouble()){
                  double x = scanner.nextDouble(); //接收数值
                  m = m + 1; //m++  用回车计次输入几个数值
                  sum = sum + x; //用sum求所输入数值的和
                  System.out.println("你输入了第" + m + "个数字,然后当前结果sum=" + sum);
              }
      
              System.out.println(m + "个数的和为" + sum);
              System.out.println(m + "个数的平均值是" + (sum / m));
      
              scanner.close();
          }
      }
      
    • 返回结果

      1	//自由输入第一个正确的类型数值
      你输入了第1个数字,然后当前结果sum=1.0
      2	//自由输入第二个正确的类型数值
      你输入了第2个数字,然后当前结果sum=3.0
      3	//自由输入第三个正确的类型数值
      你输入了第3个数字,然后当前结果sum=6.0
      4	//自由输入第四个正确的类型数值
      你输入了第4个数字,然后当前结果sum=10.0
      x	//自由输入错误的类型值结束判断直接求和与平均值
      4个数的和为10.0
      4个数的平均值是2.5
      
      进程已结束,退出代码为 0
      
posted @ 2024-03-09 16:00  阿俊学JAVA  阅读(12)  评论(0编辑  收藏  举报