Scanner
用next的方式接收键盘数据:
public static void main(String[] args) {
//创建一个扫描器对象,用于接收键盘数据(system.in)
Scanner scanner = new Scanner(System.in);
System.out.println("用next的方式接收:");
//判断用户有没有输入字符串
if (scanner.hasNext()){
//用next的方式接收
String str = scanner.next();
System.out.println("message:" + str);
}
scanner.close();//用完一定要关掉
}
Scanner(System.in)
注意:用完一定要close。
用nextLine方式接收:
public static void main(String[] args) {
//创建一个扫描器对象,用于接收键盘数据(system.in)
Scanner scanner = new Scanner(System.in);
System.out.println("用nextLine的方式接收:");
//判断用户有没有输入字符串
if (scanner.hasNextLine()){
//用next的方式接收
String str = scanner.nextLine();
System.out.println("message:" + str);
}
scanner.close();//用完一定要关掉
}
结果:
用nextLine的方式接收:
Hello World
message:Hello World
Scanner两种方法的对比
next()
- 一定要读取到有效字符后才可以结束输入
- 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
- 只有输入有效字符后才将其后面的空白作为结束符
- next()不能得到带有空格的字符串
nextLine()
- 以enter为结束符,也就是说返回的是输入回车之前的所有字符
- 可以获得空白
进阶
还可以用hasNextInt()判断输入内容有无整数
用nextInt()给变量赋整数值
其他数据类型也一样
public static void main(String[] args) {
//创建一个扫描器对象,用于接收键盘数据(system.in)
Scanner scanner = new Scanner(System.in);
System.out.println("接收:");
//判断用户有没有输入字符串
if (scanner.hasNextInt()){
//用next的方式接收
int i = scanner.nextInt();
System.out.println("整数:" + i);
}else System.out.println("没有整数");
scanner.close();//用完一定要关掉
}
运行结果1:
接收:
123 head
整数:123
结果2:
接收:
head 123
没有整数
例求和:
public static void main(String[] args) {
//创建一个扫描器对象,用于接收键盘数据(system.in)
Scanner scanner = new Scanner(System.in);
System.out.println("接收数字:");
//求和
double sum = 0 ;
//统计输入了多少个数字
int m = 0;
while (scanner.hasNextDouble()){
m++;
sum += scanner.nextDouble();
}
System.out.println("总和为" + sum);
System.out.println("数字个数为" + m);
scanner.close();//用完一定要关掉
}
结果实例:
接收数字:
30 40
30
30
head
总和为130.0
数字个数为4