Java : Scanner用法 干货 简明
1 创建对象
创建Scanner类型的变量
Scanner scanner = new Scanner(System.in);
//Scanner:类名
//scanner:变量名,自己取
//new:创建对象的关键字
(1) 其中,输入Scanner时,当它出现下面的目录时,按 Tab键 会自动补全Scanner的拼写,也会自动导入它的包。(不导入 标红报错)
(2) 每一个进程启动,都会自动打开三个文件:
System.in(标准输入)
System.out (标准输出):在打印语句中有用(System.out.println();)
System.error(标准错误)
(3) 找不到定义
出现如图这种情况,某个类找不到定义,此时可以尝试使用 Alt + Enter 让IDEA自动查找该类对应的位置,并自动import这个类。
鼠标放在红字位置按 Alt + Enter
2 读取语句
用Scanner.nextXXX的形式来读取数据
(1) 根据数据类型决定XXX是什么
int num1 = scanner.nextInt(); //读整数
double num2 = scanner.nextDouble(); //读浮点数
//以此类推,注意可以使用Tab键补全
(2) 特殊:String的读取
两种读取方式:
//读到空白符结束
String str1 = scanner.next();
//读到换行符结束
String str2 = scanner.nextLine();
scanner.next():
它是从有效字符开始读取,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束键,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。
scanner.nextLine():
它读取返回的是换行符\n前所有的字符,是可以得到带空格的字符串的。
空白符 是一个统称:
空格,换行\n ,回车\r ,翻页\f ,制表\t ,垂直制表\v 等等。
(3) 需要输入若干个整数(其他类型同理)
a. 假如需要输入两个整数,可以调用两次 nextInt()
int a = scanner.nextInt();
int b = scanner.nextInt();
b. 但是! 若是不知道要调用的次数 或 次数很大时,再这样做就不合适了,需要使用循环。
while(scanner.hasNextInt()){
}
判断是否能继续读取数据:
如果能–>返回 true
如果不能–>返回 false
c. 对用户输入的若干个整数进行求和,代码:
int sum = 0;
System.out.println("请输入数并以回车做结尾:");
while(scanner.hasNextInt()){
int num = scanner.nextInt();
System.out.println("输入的数是:" + num);
sum += num;
}
System.out.println("和为" + sum);
这时会发现缺少一个终止的条件,计算机并不知道要输多少个数才停止。只有停止输入,读输出语句时,我们才能看到sum 的结果。
我们需要借助一个特殊的字符:EOF(end of file)。
Windows上使用ctrl + z 触发 EOF
Linux/max 使用 ctrl + d 触发 EOF
IDEA的终端也是通过 ctrl + d 触发EOF(IDEA跨平台)
使用ctrl + d 后,会出现 ^D(代表ctrl + d),触发了EOF,让循环结束,执行打印语句,结束程序。