本文是《Java 入门指南》的第十一篇文章,介绍了 Java 的 Scanner 类。
Scanner 类
描述:
java.util.Scanner
是 Java 5 的新特性,用于接收用户的输入。
通过 Scanner 类的 hasNext()
和 hasNextLine()
判断用户是否输入,通过 next()
和 nextLine
接收用户的输入。
实例:
示例代码(hasNext()
和 next()
):
package com.jianrry.test;
//导入 java.util.Scanner 类。
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
System.out.println("使用 next() 接收用户的输入");
//创建一个 Scanner 对象,用于接收用户的输入。
Scanner scanner=new Scanner(System.in);
//使用 hasNext() 判断用户是否输入信息。
if (scanner.hasNext()){
//定义一个 String 类型的变量 str,用于接收用户输入的字符串。
String str=scanner.next();
System.out.println("用户输入的信息为:"+str);
}
//关闭 Scanner 对象,减少资源浪费。
scanner.close();
}
}
测试数据(hasNext()
和 next()
):
Hello World!
运行结果(hasNext()
和 next()
):
使用 next() 接收用户的输入
Hello World!
用户输入的信息为:Hello
示例代码(hasNextLine()
和 nextLine()
):
package com.jianrry.test;
//导入 java.util.Scanner 类。
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
System.out.println("使用 nextLine() 接收用户的输入");
//创建一个 Scanner 对象,用于接收用户的输入。
Scanner scanner=new Scanner(System.in);
//使用 hasNext() 判断用户是否输入信息。
if (scanner.hasNextLine()){
//定义一个 String 类型的变量 str,用于接收用户输入的字符串。
String str=scanner.nextLine();
System.out.println("用户输入的信息为:"+str);
}
//关闭 Scanner 对象,减少资源浪费。
scanner.close();
}
}
测试数据(hasNextLine()
和 nextLine()
):
Hello World!
运行结果(hasNextLine()
和 nextLine()
):
使用 nextLine() 接收用户的输入
Hello World!
用户输入的信息为: Hello World!
示例代码(hasNextInt()
和 nextInt()
):
package com.jianrry.test;
//导入 java.util.Scanner 类。
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
System.out.println("请输入整数或小数:");
//创建一个 Scanner 对象,用于接收用户的输入。
Scanner scanner=new Scanner(System.in);
//使用 hasNextInt() 判断用户是否输入 int 类型的信息。
if (scanner.hasNextInt()){
//定义一个 int 类型的变量 i,用于接收用户输入的整数。
int i=scanner.nextInt();
System.out.println("输入的整数为:"+i);
} else if(scanner.hasNextDouble()){
//定义一个 double 类型的变量 d,用于接收用户输入的小数。
double d=scanner.nextDouble();
System.out.println("输入的小数为:"+d);
} else {
System.out.println("你输入的数据不合法!");
}
//关闭 Scanner 对象,减少资源浪费。
scanner.close();
}
}
测试数据(hasNextInt()
和 nextInt()
):
//测试数据1
2333
//测试数据2
3.1415926
//测试数据3
ABC
运行结果(hasNextInt()
和 nextInt()
):
//运行结果1
请输入整数或小数:
2333
输入的整数为:2333
//运行结果2
请输入整数或小数:
3.1415926
输入的小数为:3.1415926
//运行结果3
请输入整数或小数:
ABC
你输入的数据不合法!
示例代码(hasNextDouble()
和 nextDouble()
):
package com.jianrry.test;
//导入 java.util.Scanner 类。
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
System.out.println("请输入数据:");
//创建一个 Scanner 对象,用于接收用户的输入。
Scanner scanner=new Scanner(System.in);
double sum=0;
int i=0;
//使用 hasNextDouble() 判断用户是否输入 double 类型的信息。
while (scanner.hasNextDouble()){
//定义一个 double 类型的变量 d,用于接收用户输入的小数。
double d=scanner.nextDouble();
//等价于 sum+=d;
sum=sum+d;
//等价于 i++;
i=i+1;
}
System.out.println("总和为:"+sum);
System.out.println("平均数为:"+(sum/i));
//关闭 Scanner 对象,减少资源浪费。
scanner.close();
}
}
测试数据(hasNextDouble()
和 nextDouble()
):
10
20
30
40
A
运行结果(hasNextDouble()
和 nextDouble()
):
请输入数据:
10
20
30
40
A
总和为:100.0
平均数为:25.0
区别:
next()
:
- 只有用户输入有效字符之后,才能结束。
- 有效字符之前的空白,会自动去掉。
- 有效字符之后的空白,会作为结束符,结束用户的输入。
next()
不能得到有空白的字符串。
nextLine()
:
- 不要求用户输入有效字符,用户也可以输入空白,结束输入。
- 有效字符之前的空白,会保留。
- 有效字符之后的
Enter
键,会作为结束符,结束用户的输入。 nextLine()
可以得到有空白的字符串。