什么是Scanner
基本认识
-
Scanner是一个Java内置的工具类,可以实现一些简单的机器和人的交互,我们可以通过Scanner类来获取用户的输入。
-
基本语法
// 创建Scanner对象,用于接收键盘输入的数据 Scanner scanner = new Scanner(System.in); -
通过Scanner类的 next() 和 nextLine() 方法获取输入的字符串,在读取前我们一般需要通过 hasNext() 与 hasNextLine() 来判断是否还有输入的数据
简单的代码示范
package com.molu.test;
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
// 创建Scanner对象,用于接收键盘输入的数据
Scanner scanner = new Scanner(System.in);
// 写一行提示
System.out.println("使用next方法接收用户的输入:");
// 判断用户有没有输入字符串(可以去掉)
if (scanner.hasNext()){
// 使用next()方法获取用户输入的字符串
String str = scanner.next();
// 将用户输入的字符串打印
System.out.println("用户输入的是:" + str);
}
// 关闭Scanner,防止资源占用
scanner.close();
}
}
控制台交互测试
运行之后我们在控制台得到了一个简单交互界面,可以看到打印出了我们写的提示。我们也可以在提示下方尝试输入一个字符串。
输入Hello World后发现打印出的提示只有Hello 而没有World,且程序接收到我们的字符串后结束了运行。
这里不要惊慌,并不是程序哪里写错了;我们来看一下hasNext的一些规范
hasNext() :
- 一定要读取到有效字符才会结束运行。
- 在输入有效字符前遇到的空白,hasNext会将其自动去除。
- 输入有效字符后会将遇到的空白作为分隔符或结束符。
所以我们输入 "Hello World" 只能得到 "Hello" 是正常的情况。(因为有空格)
我们可以通过修改Next为NextLine,来避免这种问题。
修改完成后再次在控制台进行测试,得到了完整的Hello World (nextLine以回车为结束符,可以接收到我们输入的全部字符串)。
使用Scanner实现简单的数学操作
代码如下:(代码很简单,都是一些基础就不多赘述,注释也就懒得写了)
package com.molu.test;
import java.util.Scanner;
public class Demo2 {
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++;
sum += x;
System.out.println("你输入了第" + m + "个参数,当前的和为" + sum);
}
System.out.println("运行结束平均数为:" + (sum/m));
scanner.close();
}
}
运行后我们可以输入多个参数来求和,运行结束(输入非double类型的参数就可以退出)后会求出平均值(会存在精度问题)。
本来还挺纠结的这么简单的东西有没有写博客的必要,想了想也许或多或少能帮到一些新人还是写了。(水博客真塔玛开心~~~)
原图p站地址 :
点击跳转 (需要挂梯子 ~)
画师id : KUROBEKO