Java 扫描器类
Java 扫描器类
在本教程中,我们将通过示例了解 Java Scanner 及其方法。
Scanner
java.util
的类 包用于从不同来源读取输入数据,如输入流、用户、文件等。我们举个例子。
示例1:使用扫描仪读取一行文本
import java.util.Scanner;
class Main {
public static void main(String[] args) {
// creates an object of Scanner
Scanner input = new Scanner(System.in);
System.out.print("Enter your name: ");
// takes input from the keyboard
String name = input.nextLine();
// prints the name
System.out.println("My name is " + name);
// closes the scanner
input.close();
}
}
输出
Enter your name: Kelvin My name is Kelvin
在上面的例子中,注意这一行
Scanner input = new Scanner(System.in);
在这里,我们创建了一个 Scanner
的对象 命名为 输入 .
System.in
参数用于从标准输入中获取输入。它的工作原理就像从键盘输入一样。
然后我们使用了 nextLine()
Scanner
的方法 类从用户那里读取一行文本。
现在您对 Scanner
有了一些了解 ,让我们进一步了解它。
导入扫描器类
从上面的例子可以看出,我们需要导入java.util.Scanner
包才可以使用Scanner
类。
import java.util.Scanner;
要了解有关导入包的更多信息,请访问 Java 包。
用 Java 创建一个 Scanner 对象
导入包后,我们可以创建 Scanner
对象。
// read input from the input stream
Scanner sc1 = new Scanner(InputStream input);
// read input from files
Scanner sc2 = new Scanner(File file);
// read input from a string
Scanner sc3 = new Scanner(String str);
在这里,我们创建了 Scanner
的对象 分别从 InputStream、File 和 String 读取输入的类。
获取输入的 Java 扫描器方法
Scanner
类提供了各种方法,可以让我们读取不同类型的输入。
方法 | 说明 |
---|---|
nextInt() | 读取一个 int 来自用户的价值 |
nextFloat() | 读取一个 float 价值来自用户 |
nextBoolean() | 读取一个 boolean 来自用户的价值 |
nextLine() | 从用户那里读取一行文本 |
next() | 从用户那里读取一个单词 |
nextByte() | 读取一个 byte 来自用户的价值 |
nextDouble() | 读取一个 doubl 来自用户的价值 |
nextShort() | 读取一个 short 来自用户的价值 |
nextLong() | 读取一个 long 来自用户的价值 |
示例 2:Java 扫描器 nextInt()
import java.util.Scanner;
class Main {
public static void main(String[] args) {
// creates a Scanner object
Scanner input = new Scanner(System.in);
System.out.println("Enter an integer: ");
// reads an int value
int data1 = input.nextInt();
System.out.println("Using nextInt(): " + data1);
input.close();
}
}
输出
Enter an integer: 22 Using nextInt(): 22
在上面的例子中,我们使用了 nextInt()
读取整数值的方法。
示例 3:Java 扫描器 nextDouble()
import java.util.Scanner;
class Main {
public static void main(String[] args) {
// creates an object of Scanner
Scanner input = new Scanner(System.in);
System.out.print("Enter Double value: ");
// reads the double value
double value = input.nextDouble();
System.out.println("Using nextDouble(): " + value);
input.close();
}
}
输出
Enter Double value: 33.33 Using nextDouble(): 33.33
在上面的例子中,我们使用了 nextDouble()
读取浮点值的方法。
示例 4:Java 扫描器 next()
import java.util.Scanner;
class Main {
public static void main(String[] args) {
// creates an object of Scanner
Scanner input = new Scanner(System.in);
System.out.print("Enter your name: ");
// reads the entire word
String value = input.next();
System.out.println("Using next(): " + value);
input.close();
}
}
输出
Enter your name: Jonny Walker Using next(): Jonny
在上面的例子中,我们使用了 next()
从用户那里读取字符串的方法。
在这里,我们提供了全名。但是,next()
方法只读取名字。
这是因为 next()
方法读取输入直到 空白 特点。一旦 空格 遇到,则返回字符串(不包括空格)。
示例 5:Java 扫描器 nextLine()
import java.util.Scanner;
class Main {
public static void main(String[] args) {
// creates an object of Scanner
Scanner input = new Scanner(System.in);
System.out.print("Enter your name: ");
// reads the entire line
String value = input.nextLine();
System.out.println("Using nextLine(): " + value);
input.close();
}
}
输出
Enter your name: Jonny Walker Using nextLine(): Jonny Walker
在第一个示例中,我们使用了 nextLine()
从用户那里读取字符串的方法。
不同于 next()
, nextLine()
方法读取包括空格在内的整行输入。该方法在遇到下一行字符 \n
时终止 .
推荐阅读: Java Scanner 跳过 nextLine()。
Java 扫描器与 BigInteger 和 BigDecimal
Java 扫描器也可以用来读取大整数和大十进制数。
- nextBigInteger() - 从用户那里读取大整数值
- nextBigDecimal() - 从用户那里读取大十进制值
示例 4:读取 BigInteger 和 BigDecimal
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
// creates an object of Scanner
Scanner input = new Scanner(System.in);
System.out.print("Enter a big integer: ");
// reads the big integer
BigInteger value1 = input.nextBigInteger();
System.out.println("Using nextBigInteger(): " + value1);
System.out.print("Enter a big decimal: ");
// reads the big decimal
BigDecimal value2 = input.nextBigDecimal();
System.out.println("Using nextBigDecimal(): " + value2);
input.close();
}
}
输出
Enter a big integer: 987654321 Using nextBigInteger(): 987654321 Enter a big decimal: 9.55555 Using nextBigDecimal(): 9.55555
在上面的例子中,我们使用了 java.math.BigInteger
和 java.math.BigDecimal
包读取BigInteger
和 BigDecimal
分别。
Java Scanner 的工作
Scanner
类读取整行并将该行划分为标记。标记是对 Java 编译器有一定意义的小元素。例如,
假设有一个输入字符串:
He is 22
在这种情况下,扫描器对象将读取整行并将字符串划分为标记:“He ", "是 " 和 "22 "。然后该对象遍历每个令牌并使用其不同的方法读取每个令牌。
注意 :默认情况下,使用空格来划分token。
java