0

私の入力は次のようになります。印刷された一連のテキスト行の後に 2 つの数字を取得しようとしているとします。

abcdef
abcdef
abcdef
abcdef
123 456

これは、私が使用しようとしているものの疑似コードです。

input.useDelimiter(" "); //I've tried a lot of patterns to no avail.
while(!input.hasNextInt()){
    System.out.println(input.next());
}
System.out.println("Found Ints");
int posRow = input.nextInt();
System.out.println("posRow: "+posRow);
int posCol = input.nextInt();
System.out.println("posCol: "+posCol);

私の出力は次のようになります

abcdef
abcdef
abcdef
abcdef
123
Found Ints
posRow: 456
NoSuchElementException

したがって、問題は、スペースがないため、テキストの最後の行と最初の数字を int ではなく 1 つのチャンクとして読み取っていることであると想定しています。とりわけ \r \n \r\n を使用してみましたが、これを理解できないようです。

助けてくれてありがとう!

4

2 に答える 2

0

hasNextLine()の代わりに使用hasNextIntします。番号が常に最後の行である場合は、個別に分割できます。

これはどう?

input.useDelimiter(" ");
while(input.hasNextLine()){
    System.out.println(input.nextLine())
}
System.out.println("Found Ints");
int posRow = input.nextInt();
System.out.println("posRow: "+posRow);
int posCol = input.nextInt();
System.out.println("posCol: "+posCol);
于 2012-12-06T23:57:32.323 に答える
0

これを試して...

input.useDelimiter(Pattern.compile("\\s|\\n"));

これは区切り文字としてスペースまたは改行を使用します。

問題は、区切り文字にスペースを使用すると、すべての最初の行が評価される 1 つの項目になる数字の間のスペースになることです。これは int ではありません。次に、次のものがありますが、最終的な nextInt にはこれ以上ないため、例外です。

于 2012-12-07T00:05:52.640 に答える