[英]How to stop reading multiple lines from stdin using Scanner?
我正在处理一个 JAVA 作业,应该处理多行输入。 指令为“从标准输入读取输入”。
给出了示例输入的示例:
one 1
two 2
three 3
我不明白上面的示例输入“从标准输入读取”是什么意思。
这是我编写的一个测试程序,它可以消除我的困惑:
import java.io.*;
import java.util.Scanner;
class Test
{
public static void main(String[] args)
{
Scanner stdin = new Scanner(System.in);
while(stdin.hasNextLine())
{
String line = stdin.nextLine();
String[] tokens = line.split(" ");
System.out.println(Integer.parseInt(tokens[1]));
}
}
当我在控制台中运行这个程序时,它会等待我的输入,每次我输入一行时,它都会按照我的预期回显。 所以我想也许上面的示例输入可以通过以这种方式输入 3 行中的每一行来实现。 然而,似乎没有办法结束这个过程。 输入 3 行后,如何终止输入? 我尝试只按两次 Enter 键,但这似乎读取为仅包含换行符的行,这会导致错误,因为该行不符合它期望的 2 标记格式。
这是控制台交互的样子:
javac Test.java
java Test
one 1
1
two 2
2
three 3
3
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at Test.main(Test.java:13)
如果您能指出我理解上的差距,我将不胜感激。
import java.util.Scanner;
public class Test
{
public static void main(String[] args)
{
String line;
Scanner stdin = new Scanner(System.in);
while(stdin.hasNextLine() && !( line = stdin.nextLine() ).equals( "" ))
{
String[] tokens = line.split(" ");
System.out.println(Integer.parseInt(tokens[1]));
}
stdin.close();
}
}
祝你好运!
您也可以将您的值放在一个文件中,例如 input.txt 并执行以下操作:
java Test < input.txt
在 shell 中,按 Ctrl-D ,它将关闭 stdin。 或者,管道输入
cat your-input-file | java Test
要停止输入,您可以提示用户输入退出退出,然后测试输入中是否存在该字符串,找到时退出循环,或者您可以在循环中使用计数器,当已达到最大迭代次数。 break
语句将使您摆脱循环。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.