Scanner
该类用于获取输入,位于 java.util
包下,通过 import java.util.Scanner;
导入。
如下使用 Scanner
类创建一个对象:
Scanner scanner = new Scanner(System.in);
1. **next()
及其同伴方法的使用
1.1 next()
next()
方法的返回值是字符串类型,可以使用此方法,将用户输入的内容扫描为字符串。会去掉字符串前的空白,不能得到中间带有空格的字符串。
public class ClassTest {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
System.out.println("输入的内容为: " + str);
}
}
// 输入: 12e dvbd
// 输出:输入的内容为: 12e
// 输出去掉了输入开头的空白,且遇到空格后结束扫描
1.2 nextInt
nextFloat
nextDouble
获取相应类型的输入值。
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
float half =
0.5f; // 小数默认为 double 类型, 需要在后面加 f 来表示 float 类型
float height = in.nextFloat();
int n = in.nextInt();
float h = height, s = 0;
for (int i = 0; i < n; i++) {
if (i == 0 ) {
s = s + h;
} else {
s = s + h * 2;
}
h = h * half;
}
System.out.printf("%.3f %.3f", h, s); // 格式化输出
}
}
1.3 nextLine
读取输入的字符串(包括空格),以换行符作为结束。
public class ClassTest {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine();
System.out.println(str);
}
}
// 输入: notebook co&&123;
// 输出: notebook co&&123;
// 输出保留了输入的空白
2. **hasNext()
及其同伴方法的使用
2.1 hasNext()
hasNext()
在缓冲区扫描用户的输入,缓冲区有输入则返回 true
,但是如果缓冲区为空,并不会返回 false
,而是会阻塞。可以给其一个字符串参数,与参数匹配返回 true
,否则返回 false
,通过判断扫描到的用户的输入是否与参数匹配来结束扫描:
public class ScannerKeyBoardTest
{
public static void main(String[] args)
{
// 输入若干字符,以空格作为分隔
Scanner in = new Scanner(System.in);
//与 “#” 匹配返回true, 然后取非运算。即以#为结束符号
while(!in.hasNext("#"))
{
System.out.println("输入的是: " + in.next());
}
System.out.println("结束");
}
}
2.2 hasNextInt()
hasNextInt()
用于判断输入是否为整数,返回值类型为 Boolean
,空格和回车不会使其返回 false
。 循环中输入必须以非 int
型结束, 否则也会阻塞, 等待下一个输入。
public class ClassTest {
public static void main(String[] args) {
int sum = 0;
Scanner in = new Scanner(System.in);
// 判断输入类型是否为 int , 但不能获取输入的值,可配合 nextInt 使用
while(in.hasNextInt()) {
int a = in.nextInt();
sum = sum + a;
System.out.println(sum);
}
System.out.println("sum = " + sum);
}
}
// 输入:1 2 3 4 5 6 #
// 输出:1 3 6 10 15 21 sum = 21
nextFloat
等类似于hasNextInt()
。