用户交互Scanner

用户交互Scanner

  • 基本语法:

Scanner s = new Scanner(System.in);

  • 通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。

 

next() hasNext()

package javaSE.scanner;

import java.util.Scanner;

public class Demo01 {
   public static void main(String[] args) {
       //创建一个扫描器对象,用于接收键盘数据
       Scanner scanner = new Scanner(System.in);//in 输入       hello world

       System.out.println("使用next方式接收:");

       //判断用户有没有输入字符串
       if(scanner.hasNext()){
           String str = scanner.next();//使用next方式接收
           System.out.println("输入的内容为"+str);//hello       少了world

      }
       //凡是属于IO流的类如果不关闭会一直占用资源。(IO流:输入输出流)
       scanner.close();//释放内存
  }
}

 

nextLine() hasNextLine()

package javaSE.scanner;

import java.util.Scanner;

public class Demo02 {
   public static void main(String[] args) {
       //从键盘输入数据eg:hello world
       Scanner scanner = new Scanner(System.in);

       System.out.println("使用nextLine方式接收:");

       //判断是否还有输入
       if(scanner.hasNextLine()){
           String str = scanner.nextLine();
           System.out.println("输出内容为"+str);//hello world
      }
       scanner.close();
  }
}

 

 

Scanner对象

  • next():

    • 一定要读取到有效字符后才可以结束输入

    • 对输入有效字符前遇到的空白,next()方法会自动将其去掉

    • 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符

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

  • nextLine():

    • 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符

    • 可以获得空白

 


eg:

package javaSE.scanner;

import java.util.Scanner;

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("输入的内容为:"+str);
       scanner.close();//释放
  }
}

 

 



扩充:

输入指定的数据类型(eg:小数、整数):

package javaSE.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;

       System.out.println("请输入整数:");
       if (scanner.hasNextInt()){//判断输入的是否为整数
           i = scanner.nextInt();
           System.out.println("整数:"+i);
      }else {
           System.out.println("输入的不是整数!");
      }
       //----------------------------------------------------
       System.out.println("________________________________");
       System.out.println("请输入小数:");
       if (scanner.hasNextFloat()){//判断输入的是否为整数
           f = scanner.nextFloat();
           System.out.println("小数:"+f);
      }else {
           System.out.println("输入的不是小数!");
      }


       scanner.close();
  }
}

 

例题:输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束并输出执行结果:

package javaSE.scanner;

import java.util.Scanner;

public class Demo05 {
   //输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束并输出执行结果:

   public static void main(String[] args) {
       Scanner scanner = new Scanner(System.in);
       double d = 0;
       for (int i=0;;i++){
           if (scanner.hasNextDouble()){//若输入的是数字则进行循环,否则输出结果并return

               d += scanner.nextDouble();//d = d + 输入的数据
          }else {
               System.out.println("总和为"+d);
               System.out.println("输入数据个数是"+i);
               if (i != 0){                    //防止除数i为0
                   System.out.println("平均数是"+d/i);
              }else {
                   System.out.println("平均数是0");
              }

               scanner.close();
               return ;
          }
      }



  }

}

 

————————————————参考答案:

package javaSE.scanner;

import java.util.Scanner;

public class Demo005 {
   //输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束并输出执行结果:
   //参考答案——————————————————————————————————————————————————————————————————————————
   public static void main(String[] args) {
       Scanner scanner = new Scanner(System.in);



       //和
       double sum = 0;
       //计算输入了多少数字
       int m = 0;

       //通过循环判断是否还有输入,并在里面对每一次进行求和和统计
       while (scanner.hasNextDouble()){
           double x = scanner.nextDouble();
           m ++;//m=m+1
           sum += x;//sum = sum + x;
           System.out.println("你输入了第"+m+"个数据,当前结果是"+sum);
      }

       System.out.println(m+"个数的和为"+sum);
       System.out.println(m+"个数的平均值是"+(sum/m));




       scanner.close();
  }
}
 
posted @ 2022-05-01 13:30  唐靈影  阅读(22)  评论(0)    收藏  举报