java.util
包的Scanner
类用于从不同的源(例如输入流,用户,文件等)读取输入数据。让我们举个例子。
示例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 name
System.out.println("My name is " + name);
// Closes the scanner
input.close();
}
}
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 name
System.out.println("My name is " + name);
// Closes the scanner
input.close();
}
}
输出
Enter your name: Jack
My name is Jack
在上面的示例中,请注意以下行
Scanner input = new Scanner(System.in);
在这里,我们创建了一个名为input的Scanner
对象。
System.in
参数用于从标准输入中获取输入。就像从键盘上获取输入一样。
然后,我们使用Scanner
类的nextLine()
方法从用户读取一行文本。
现在您对Scanner
有了一些了解,让我们对其进行更多探索。
导入扫描仪类
从上面的示例可以看出,在使用Scanner
类之前,需要导入java.util.Scanner
包。
import java.util.Scanner;
用Java创建扫描程序对象
如上所述,导入包后,就可以创建Scanner
对象。
// To read input from the input stream
Scanner sc1 = new Scanner(InputStream input);
// To read input from files
Scanner sc2 = new Scanner(File file);
// To read input from a string
Scanner sc3 = new Scanner(String str);
在这里,我们创建了Scanner
类的对象,这些对象将分别从InputStream,文件和字符串读取输入。
Java扫描仪输入方法
Scanner
类提供了各种方法,使我们可以读取不同类型的输入。
Method | Description |
---|---|
nextInt() |
reads an int value from the user |
nextFloat() |
reads a float value form the user |
nextBoolean() |
reads a boolean value from the user |
nextLine() |
reads a line of text from the user |
next() |
reads a word from the user |
nextByte() |
reads a byte value from the user |
nextDouble() |
reads a doubl e value from the user |
nextShort() |
reads a short value from the user |
nextLong() |
reads a long value from the user |
示例2:Java扫描程序nextInt()
import java.util.Scanner;
class Main {
public static void main(String[] args) {
// creating a Scanner object
Scanner input = new Scanner(System.in);
System.out.println("Enter an integer: ");
// read 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()。
具有BigInteger和BigDecimal的Java扫描仪
Java扫描程序还可以用于读取大整数和大十进制数。要了解BigInteger和BigDecimal,请访问Java BigInteger和Java BigDecimal 。
-
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
类读取整行并将该行分为令牌。令牌是对Java编译器有意义的小元素。例如,
假设有一个输入字符串:
He is 22
在这种情况下,扫描程序对象将读取整行并将该字符串分为令牌:“ He “,“ is “和“ 22 “。然后,对象遍历每个令牌,并使用其不同方法读取每个令牌。
注意 :默认情况下,空格用于划分标记。