博客
关于我
JAVA流程控制01——用户交互Scanner和scanner的进阶使用
阅读量:250 次
发布时间:2019-03-01

本文共 1832 字,大约阅读时间需要 6 分钟。

Java流程控制——用户交互Scanner和Scanner的进阶使用

Scanner对象

在Java编程中,Scanner类是处理用户输入的强大工具。它提供了两种主要方法来获取输入:next()和nextLine()。在使用这些方法之前,我们需要先检查是否有输入数据可以读取。这可以通过hasNext()和hasNextLine()方法实现。

next()与nextLine()的区别

next()方法

  • 特点
    • 一定要读取到有效字符才可以结束输入。
    • 输入的有效字符之前遇到的空白会被自动去掉。
    • 只有在读取到有效字符后,才会将其后面的空白作为分隔符或结束符。
    • 不能得到带有空格的字符串。

nextLine()方法

  • 特点
    • 以回车(Enter)为结束符,返回的是输入的回车字符。
    • 之前的所有字符,包括空白,都可以被获取。

示例

示例1:读取单行输入

Scanner scanner = new Scanner(System.in);System.out.println("请输入一个数字:");String input = scanner.nextLine();System.out.println("您输入的内容是:" + input);

示例2:读取多行输入

Scanner scanner = new Scanner(System.in);System.out.println("请输入多个数字,每行一个:");while (scanner.hasNext()) {    String input = scanner.next();    System.out.println("您输入的内容是:" + input);}

关闭资源

记住,Scanner类是资源密集型的。使用完毕后,必须及时关闭:

scanner.close();

扩展:不加判断直接使用

有时候,我们可以直接使用Scanner类来获取输入,而无需判断是否有输入。这种方法简单易懂:

Scanner scanner = new Scanner(System.in);System.out.println("请输入数字(按回车结束):");String input = scanner.nextLine();System.out.println("您输入的内容是:" + input.replace(" ", ""));

Scanner的进阶使用

示例:判断输入类型

Scanner scanner = new Scanner(System.in);System.out.println("请输入一个数:");String input = scanner.nextLine();double number = Double.parseDouble(input);if (number % 1 == 0) {    System.out.println("这是一个整数:" + number);} else {    System.out.println("这是一个小数:" + number);}

示例:计算总和与平均数

Scanner scanner = new Scanner(System.in);System.out.println("请输入多个数字(每行一个,按回车结束):");List
numbers = new ArrayList<>();while (scanner.hasNext()) { String input = scanner.next(); if (scanner.hasNextLine()) { numbers.add(Double.parseDouble(input)); } else { break; }}double sum = numbers.stream().mapToDouble(Double::doubleValue).sum();double average = sum / numbers.size();System.out.println("总和为:" + sum);System.out.println("平均数为:" + average);

通过以上方法,您可以灵活地处理用户输入,实现各种交互场景。记得在使用完Scanner后,及时关闭资源以避免内存泄漏。

转载地址:http://oqov.baihongyu.com/

你可能感兴趣的文章
opencv glob 内存溢出异常
查看>>
opencv Hog Demo
查看>>
opencv Hog学习总结
查看>>
opencv Mat push_back
查看>>
opencv putText中文乱码
查看>>
OpenCV Python围绕特定点将图像旋转X度
查看>>
opencv resize
查看>>
Opencv Sift和Surf特征实现图像无缝拼接生成全景图像
查看>>
opencv SVM分类Demo
查看>>
OpenCV VideoCapture.get()参数详解
查看>>
opencv videocapture读取视频cap.isOpened 输出总是false
查看>>
opencv waitKey() 函数理解及应用
查看>>
OpenCV 中的图像转换
查看>>
OpenCV 人脸识别 C++实例代码
查看>>
OpenCV 在 Linux 上的 python 与 anaconda 无法正常工作.收到未实现 cv2.imshow() 的错误
查看>>
Opencv 完美配置攻略 2014 (Win8.1 + Opencv 2.4.8 + VS 2013)上
查看>>
opencv 模板匹配, 已解决模板过大程序不工作的bug
查看>>
OpenCV 错误:(-215)size.width>0 &&函数imshow中的size.height>0
查看>>
opencv&Python——多种边缘检测
查看>>
opencv&python——高通滤波器和低通滤波器
查看>>