• 用户交互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();



      }

     

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

  • 相关阅读:
    Tech road one step Dec-5 to Dec-11
    Tech road one step Nov-28 to Dec-4
    Tech road one step 13-Nov to 20-Nov
    Unity 相机花式分屏
    Unity渲染
    Perfect Rectangle(完美矩形)
    Max Points on a Line(直线上最多的点数)
    Unity之CharacterController 碰撞问题总结
    cocos2dx 实现flappybird
    effectiveC++ 内存管理 学习笔记
  • 原文地址:https://www.cnblogs.com/jimmykane/p/12556517.html
Copyright © 2020-2023  润新知