3

nextChar()を呼び出す方法がないため、2つの整数(空白で区切られている)または文字のいずれかである入力をどのように読み取るのかわかりません。ヘルプ?

4

3 に答える 3

3

まず第一に、文字列を比較するためにif (next=="q") 使用する代わりに。は単一の文字ですが、それでもオブジェクトであることにif (next.equals("q"))注意してください。を取得するために使用でき、次に、実際にを使用できます。"q"Stringnext.charAt(0)char 'q'next == 'q'

next()また、を使用する代わりにnextLine()、ユーザーが入力しなかった場合は"q"、行を分割して2つの整数を取得します。それ以外の場合、next()2回呼び出して、入力するだけ"q"では、プログラムを終了することはありません。スキャナーは、ユーザーが2番目から戻るものを入力するのを待つからnext()です。

String next = keyboard.nextLine();
if (next.equals("q")) {
  System.out.println("You are a quitter. Goodbye.");
}
else {
  String[] pair = next.split(" ");
  int r = Integer.valueOf(pair[0]);
  int c = Integer.valueOf(pair[1]);
  System.out.printf("%d %d\n", r, c);
}
于 2012-09-07T22:04:27.733 に答える
2

next.equals("q")代わりに使用する必要があります。==通常、プリミティブでのみ使用する必要があります。これを試して:

Scanner keyboard = new Scanner(System.in);
System.out.print("Enter a coordinate [row col] or press [q] to quit: ");
String next = keyboard.nextLine();

if (next.equals("q")){  // You can also use equalsIgnoreCase("q") to allow for both "q" and "Q".
    System.out.println("You are a quitter. Goodbye.");
    isRunning=false;
}
else {
    String[] input = next.split(" ");
    // if (input.length != 2) do_something (optional of course)
    int r = Integer.parseInt(pair[0]);
    int c = Integer.parseInt(pair[1]);
    // possibly catch NumberFormatException...
}
于 2012-09-07T22:01:09.847 に答える
2

文字列の比較は

"q".equals(next)

==同じオブジェクトを指しているかどうかを示す2つの参照を比較します。通常、プリミティブの比較に使用されます。

.equals()オブジェクトが同等性を判断するために必要な値を比較します。

于 2012-09-07T22:01:48.103 に答える