私はJAVA割り当てに取り組んでおり、複数行の入力を処理する必要があります。指示は「入力はstdinから読み取られます」と読みます。
サンプル入力の例を次に示します。
one 1
two 2
three 3
上記のサンプル入力「stdinから読み取る」の意味がわかりません。
これが私の混乱を分離する私が書いたテストプログラムです:
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回押してみましたが、改行文字のみで構成される行として読み取られているようです。この行は、期待する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)
私の理解のギャップを指摘するのに助けていただければ幸いです。