• 简单的用户交互Scanner


    不知道各位是不是,在我一开始接触Java的时候,看的两本书好像都是,在啥都没有学的时候,就已经看见了这个Scanner,所以这一篇博客就来说一下Scanner的使用:

    我感觉在新手学习阶段中(就我现在的这阶段),Scanner是程序与人交互的最简单的一种方式,这是Java给我们提供的一个工具类,我们可以使用这个类做一些简单的输入,就是获取数据。Scanner是Java5的新特征,在java.util这个包下面,我们可以通过 Scanner 类来获取用户的输入。

    其实说起来挺高大上的,什么用户交互啊,获取数据啊之类的,其实这一块是很简单的,基本上都是一些死代码。

    下面是创建 Scanner 对象的基本语法:

    1 Scanner s = new Scanner(System.in);

    接下来我们演示一个最简单的数据输入,并通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用hasNext()与hasNextLine() 判断是否还有输入的数据。

    1、next&nextLine

    我们可以使用next方式接收一下输入的数据:

     1 public static void main(String[] args) {
     2     //创建一个扫描器对象,用于接收键盘数据
     3     Scanner scanner = new Scanner(System.in);
     4     //next方式接收字符串
     5     System.out.println("Next方式接收:");
     6     //判断用户还有没有输入字符
     7     if (scanner.hasNext()){
     8         String str = scanner.next();
     9         System.out.println("输入内容:"+str);
    10     }
    11     //凡是属于IO流的类如果不关闭会一直占用资源.要养成好习惯用完就关掉.就好像你接水完了要关水龙头一样.很多下载软件或者视频软件如果你不彻底关,都会自己上传下载从而占用资源,你就会觉得卡,这一个道理.
    14     scanner.close();
    15 }
    16         

    测试数据:Hello World!

    结果:Hello

    实际测试代码后会发现,只输出了Hello,而没有输出后续的部分。

    接下来我们使用另一个方法来接收数据:nextLine()

     1 public static void main(String[] args) {
     2     Scanner scan = new Scanner(System.in);
     3     // 从键盘接收数据
     4     // nextLine方式接收字符串
     5     System.out.println("nextLine方式接收:");
     6     // 判断是否还有输入
     7     if (scan.hasNextLine()) {
     8         String str2 = scan.nextLine();
     9         System.out.println("输入内容:" + str2);
    10     }
    11     scan.close();
    12 }

    测试数据:Hello World!

    结果:Hello World!

    经过测试会发现使用nextLine()方法的话,不仅仅输出了Hello,后续的也被一起输出了。

    可以发现,这两个方法还是有很大区别的,所以我们大概总结一下两者的不同:

      next():

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

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

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

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

      nextLine():

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

        2、可以获得空白

    2、其他方法:

    通过上面的代码,我们可以发现,scanner可以使用next()和nextLine()来接收代码,但是我们也可以发现,使用这两个方法接收的都是String字符串类型的对象,那么如果我们要是想要接收其他类型的数据怎么办呢?

    这也好办,scanner中既然给我们提供了获取字符串的方法,那么也自然提供了获取其他数据类型的方法:

      可以使用nextXxx()的方法来获取数据。

    这里我们使用int和float类型来举例说:

     1 public static void main(String[] args) {
     2     Scanner scan = new Scanner(System.in);
     3     // 从键盘接收数据
     4     int i = 0;
     5     float f = 0.0f;
     6     System.out.print("输入整数:");
     7     if (scan.hasNextInt()) {
     8             // 判断输入的是否是整数
     9             i = scan.nextInt();
    10             // 接收整数
    11             System.out.println("整数数据:" + i);
    12         } else {
    13             // 输入错误的信息
    14             System.out.println("输入的不是整数!");
    15     }
    16     System.out.print("输入小数:");
    17     if (scan.hasNextFloat()) {
    18         // 判断输入的是否是小数
    19         f = scan.nextFloat();
    20         // 接收小数
    21         System.out.println("小数数据:" + f);
    22     } else {
    23         // 输入错误的信息
    24         System.out.println("输入的不是小数!");
    25     }
    26     scan.close();
    27 }
    28     

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

     1 public static void main(String[] args) {
     2     //扫描器接收键盘数据
     3     Scanner scan = new Scanner(System.in);
     4     double sum = 0; //
     5     int m = 0; //输入了多少个数字
     6     //通过循环判断是否还有输入,并在里面对每一次进行求和和统计
     7     while (scan.hasNextDouble()) {
     8         double x = scan.nextDouble();
     9         m = m + 1;
    10         sum = sum + x;
    11     }
    12     System.out.println(m + "个数的和为" + sum);
    13     System.out.println(m + "个数的平均值是" + (sum / m));
    14     scan.close();
    15 }

    到这里可能一些新伙伴才接触java,就不知道写的是什么意思了,这里我们使用了我们后面要学的流程控制语句,会在下一篇博客和大家继续聊一聊。

  • 相关阅读:
    201521123036 《Java程序设计》第4周学习总结
    201521123036 《Java程序设计》第3周学习总结
    201521123075 《Java程序设计》第12周学习总结
    201521123075 《Java程序设计》第11周学习总结
    201521123075 《Java程序设计》第10周学习总结
    201521123075 《Java程序设计》第9周学习总结
    201521123075 《Java程序设计》第8周学习总结
    201521123075 《Java程序设计》第7周学习总结
    201521123075 《Java程序设计》第6周学习总结
    201521123075 《Java程序设计》第5周学习总结
  • 原文地址:https://www.cnblogs.com/koss/p/14448512.html
Copyright © 2020-2023  润新知