扫描仪 class 如何在 java 中使用输入工作?

How Scanner class works in java with input?

Scanner 是一次性获取来自控制台的所有输入 window 还是一个一个获取?

例如:

Scanner scan = new Scanner(System.in);

int n = scan.nextInt();

int str = scan.nextLine();

float f = scan.nextFloat();

Scanner是不是一次性把所有的输入都取出来,然后把值一个一个放到数据成员里?或者它接受一个输入并将其值放入相应的数据成员然后再接受另一个输入?

二者兼而有之,视情况而定。

如果您键入 7 然后按 Enter,代码将分配 n = 7str = ""1 然后等待更多。如果您随后键入 3.14 并按 Enter,代码将分配 f = 3.14.

System.in 将在用户按下 Enter 时接收用户输入,因此尽管它是一个字符流(实际上是字节),但它们将一次以 1 行的块的形式到达。

因此,

Scanner 也会一次看到那一行。

1) 见 Scanner is skipping nextLine() after using next() or nextFoo()?