java.util
包中的Scanner
类用于从输入流、文件等不同来源读取输入数据。让我们看一个例子。
示例 1:使用 Scanner 读取一行文本
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);
在这里,我们创建了一个名为 input 的Scanner
对象。
System.in
参数用于从标准输入获取输入。它的工作方式就像从键盘获取输入一样。
然后,我们使用Scanner
类的nextLine()
方法从用户那里读取一行文本。
现在您对Scanner
有了一些了解,让我们进一步探索它。
导入 Scanner 类
从上面的示例中可以看到,在使用Scanner
类之前,我们需要导入java.util.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 读取输入的类方法
Scanner
类提供了各种方法,允许我们读取不同类型的数据。
方法 | 描述 |
---|---|
nextInt() |
从用户处读取一个int 值 |
nextFloat() |
从用户处读取一个float 值 |
nextBoolean() |
从用户处读取一个boolean 值 |
nextLine() |
从用户处读取一行文本 |
next() |
从用户处读取一个单词 |
nextByte() |
从用户处读取一个byte 值 |
nextDouble() |
从用户处读取一个doubl e值 |
nextShort() |
从用户处读取一个short 值 |
nextLong() |
从用户处读取一个long 值 |
示例 2:Java Scanner 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 Scanner 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 Scanner 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 Scanner 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 Scanner 与 BigInteger 和 BigDecimal
Java Scanner 也可用于读取大整数和大十进制数。
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
在这种情况下,scanner 对象将读取整行并将字符串划分为标记:“He”、“is”和“22”。然后,该对象遍历每个标记并使用其不同的方法读取每个标记。
注意:默认情况下,空格用于分隔标记。
另请阅读: