用户交互Scanner

Posted jimmykane

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用户交互Scanner相关的知识,希望对你有一定的参考价值。

Scanner对象

这里学习的内容是Java5带来的特征,她可以让我们实现程序和人的交互,java.util.Scanner,我们可以通过这个工具类也就是Scanner类,来获取用户输入。

基本语法

Scanner s = new Scanner(System.in);

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

这里的具体用法如下:

public static void main(String[] args) {
   //创建一个扫描器对象,用于接收键盘数据
       Scanner scanner = new Scanner(System.in);
?
       System.out.println("使用nextline接收数据:");
   //判断用户有没有输入字符串
       if(scanner.hasNextLine()==true){
           //使用nextLine方式接收
           String str = scanner.nextLine();
           System.out.println("输出的内容:"+str);
      }
       scanner.close();
?
  }

记得在最后要关闭scanner,另外一种next()方法:

public static void main(String[] args) {
       //创建一个扫描器对象,用于接收键盘数据
       Scanner scanner = new Scanner(System.in);
       System.out.println("使用next方法接收:");
?
       if (scanner.hasNext()==true){
           String str = scanner.next();
           System.out.println("输出的内容为:"+str);
      }
       scanner.close();
?
  }

运行二者程序,会发现他们都不会停止,需要用户先输入字符串,回车之后,程序才会给上面的str赋值,然后程序才会继续下面的close,之后他才会停止,然后输出。但不同方法输出有差异。

next()方法

  1. 一定要读取到有效字符后才可以结束输出。

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

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

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

 

nextLine()方法(常用)

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

  2. 可以获得空白。

 

不使用if

其实前面其实是用 if 语句来判断用户有没有输入字符串,也可以直接用定义变量的方式来写:

public static void main(String[] args) {
       Scanner scanner = new Scanner(System.in);
?
       System.out.println("使用nextline接收数据:");
       String str = scanner.nextLine();
       System.out.println("输出的内容为:" + str);
?
       scanner.close();
?
  }

这里直接将if变成上面的String行,记住就可以了

 

其他的实用Scanner方法

比如输入数据时用户要输整数或小数,即int或float数据类型,可在 if 语句后面用scanner.nextInt()和scanner.nextFloat()来写,例子:

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("请输入小数:");
?
       if(scanner.hasNextFloat()){
           f = scanner.nextFloat();
           System.out.println("小数数据:"+f);
      }else{
           System.out.println("你输入的不是一个小数数据!");
      }
?
       scanner.close();
?
  }

上面这里有else内容,也就是如果不是整数就怎样,不是小数就怎样,如果一开始输入的不是整数,中间不会停;但如果第一步正确输入整数,程序会停下来等你输入小数。

 

除此以外,当我们需要球平均数和总数时,用while语句来写:

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 = sum + x;
           System.out.println("你输入了第"+m+"个数据,当前结果为sum="+sum);
?
?
      }
       System.out.println(m+"个数的和为"+sum);
       System.out.println(m+"个数的平均值为"+(sum/m));
?
       scanner.close();
?
?
?
  }

 

这里就解决了求和和求平均数的问题,并且需要停止时只要输入非数字来结束输入并输出执行结果。

以上是关于用户交互Scanner的主要内容,如果未能解决你的问题,请参考以下文章

JavaSE-03scanner用户交互

如何使用 xcode 将快照划分为多个片段,以便让用户与每个片段进行交互?

Java用户交互Scanner

Java用户交互Scanner

用户交互Scanner 2021-05-17

Java全栈JavaSE:7.用户交互scanner