Scanner是Java语言提供的一个工具类,我们可以通过Scanner类来获取用户的输入。
基本语法:
Scanner s =new Scanner(System.in);
且有两种方式来获取数据:next(),nextLine()。它们分别通过hasnext()和hasnextLine()来判断键盘是否输入。
使用next()获取数据:
package scanner;
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
// 创建一个扫描器对象,用于接收键盘数据
Scanner sc = new Scanner(System.in);
System.out.println("使用next()进行接收:");
// 判断用户有没有输入字符串
if(sc.hasNext()) {
String str = sc.next();
System.out.println("输出结果为:" + str);
}
// 凡是属于IO流的类如果不关闭会一直占用资源,养成好习惯用完就关掉
sc.close();
}
}
使用nextLine():
package scanner;
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
// 创建对象,从键盘接收数据
Scanner scanner = new Scanner(System.in);
System.out.println("使用NextLine进行接收:");
// 判断有没有输入字符串
if(scanner.hasNextLine()){
String sc = scanner.nextLine();
System.out.println("输出结果为:"+sc);
}
scanner.close();
}
}
它们两个是都可以获取键盘输入的数据的。
那它们有什么不同呢?
首先用next()来获取键盘输入的数据:Hello World!(中间有空格)
运行结果为:
它只输出了Hello
在使用next Line():
运行结果为:
完整输出。
这就涉及到他俩的特性了,
上图:
其实可以不用判断是否有输入同样可以获取键盘数据(最基本的格式):
package scanner;
import java.util.Scanner;
public class Demo03 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个数:");
String str = scanner.nextLine();
System.out.println("输出结果为"+str);
}
}
输出结果相同:
Scanner扩展:
Scanner还可判断从键盘输入的数据类型:
输出结果为:
如果直接输入小数:
练习:写一个程序,要求我们可以输入多个数字,求其总和与平均数,每一个输入的数字用回车确认,通过输入非数字结束输入并输出执行结果。
public class Demo05{
public static void main (String[]args){
//创建Scanner对象
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个数");
//定义sum
double sum =0;
//定义输出的个数m
int m=0;
//利用while循环判断是否为数字类型
while(scanner.hasNextDouble()){
//获取到输入键盘的值
double x = scanner.nextDouble();
sum=sum+x;
m++;
System.out.print("你已经输入了"+m+"个数,它们的总和为:"+sum+"平均值为:"+sum/m);
}
}
}