1.Scanner类能干什么?
Scanner 类是Java中提供一个的工具类,可以获取用户的输入。
它是java.util 包下的一个工具类。
它是线程阻塞的,未接收到用户输入之前会一直阻塞当前线程的执行。
2.Scanner对象的创建语法
Scanner scanner = new Scanner(System.in);
3.Scanner对象的基本使用-获取字符串
通过Scanner对象的next()、nextLine()方法,获取对应输入的字符串。
通常情况下,会使用hasNext()、haxNextLine()来判断是否还有输入的内容。
在使用完Scanner对象之后,一定要调用close()方法来关闭这个对象,避免资源的浪费。
1.next()方法:
* 一定要读取到有效字符后才可以输入结束;
* 对输入有效字符之前遇到空白字符,会自动过滤掉;
* 只有输入有效字符之后才将其后面的空白字符作为分隔符或者结束符;
* next()不能得到带有空格的字符串,会以空格字符为分割符,只获取到空格之前的字符串。
2.nextLine()方法:
* 以Enter为结束符,即此方法返回的是回车之前的所有的字符;
* 因此,它是可以获取中间中空白字符的字符串的。
3.1 next()方法
//1.创建Scanner对象
Scanner scanner = new Scanner(System.in);
//2.使用Scanner对象: next() 方法接收输入的字符串
System.out.println("请输入内容(next): ");
if (scanner.hasNext()){
String nextStr = scanner.next();
System.out.println("输入的内容是(next) : "+nextStr);
}
//3.关闭Scanner
scanner.close();
// 下面是运行结果 : 【只获取到了空格之前的字符串】
请输入内容(next):
大家好 哈哈哈
输入的内容是(next) : 大家好
3.2 nextLine()方法
//1.创建Scanner对象
Scanner scanner = new Scanner(System.in);
//2.使用Scanner对象 :nextLine() 方法接收输入的字符串
System.out.println("请输入内容(nextLine): ");
if (scanner.hasNextLine()){
String nextLineStr = scanner.nextLine();
System.out.println("输入的内容是(nextLine) : "+nextLineStr);
}
//3.关闭Scanner
scanner.close();
// 下面是运行结果 : 【取到了回车之前的所有字符串】
请输入内容(nextLine):
大家好 嘿嘿嘿
输入的内容是(nextLine) : 大家好 嘿嘿嘿
4.Scanner对象获取数字类型
nextInt():获取整型
nextDouble():获取浮点型
nextFloat():获取float类型
......
对应有hasNextxxx() 的方法来判断时候有输入
【下面看一个实际的例子】
//1.创建Scanner对象
Scanner scanner = new Scanner(System.in);
//2.使用Scanner对象
/**
* 功能描述 : 输入多个数字,求和与平均数,输入任意的非数字字符结束
*/
double sum = 0.0; // 记录总和
int num = 0; // 记录有多少个数
System.out.println("请开始输入数字,并回车后输入另一个,输入任意非数字字符结束:");
while (scanner.hasNextDouble()){ // 循环判断是否有正确的输入
double v = scanner.nextDouble();
sum += v;
num += 1;
System.out.println("第 "+num+" 个数是 "+v+",和是 "+sum);
}
System.out.println("sum = "+sum);
System.out.println("avg = "+(sum/num));
//3.关闭Scanner
scanner.close();
// 下面是控制台的结果;
请开始输入数字,并回车后输入另一个,输入任意非数字字符结束:
1
第 1 个数是 1.0,和是 1.0
2
第 2 个数是 2.0,和是 3.0
3
第 3 个数是 3.0,和是 6.0
4
第 4 个数是 4.0,和是 10.0
100
第 5 个数是 100.0,和是 110.0
l
sum = 110.0
avg = 22.0
5.完成
Congratulations!
You are one step closer to success!