12

これが私のコードです:

public static void main(String[] args) {
  Scanner in = new Scanner(System.in);
  String question;
  question = in.next();

  if (question.equalsIgnoreCase("howdoyoulikeschool?") )
    /* it seems strings do not allow for spaces */
    System.out.println("CLOSED!!");
  else
    System.out.println("Que?");

「学校は好きですか?」と書こうとすると、答えはいつも「Que?」です。しかし、「学校はどうですか?」としては問題なく機能します。

入力を文字列以外のものとして定義する必要がありますか?

4

5 に答える 5

18

in.next()スペース区切りの文字列を返します。in.nextLine()行全体を読みたい場合に使用します。文字列を読み取った後、 を使用question = question.replaceAll("\\s","")してスペースを削除します。

于 2012-09-21T04:32:09.197 に答える
3

今日Javaで非常に奇妙なことを見つけたので、次のようになります-

ユーザーから複数のことを入力している場合は、次のように言います。

Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
double d = sc.nextDouble();
String s = sc.nextLine();

System.out.println(i);
System.out.println(d);
System.out.println(s);

したがって、このプログラムを実行すると、これら 3 つの入力を求められ、入力値が 10、2.5、「Java へようこそ」と表示されるように見えるかもしれません。nextLine を使用したように、プログラムはこれら 3 つの値をそのまま出力するはずです。 () したがって、変数sに入力したスペースの後のテキストは無視されません。

しかし、あなたが得る出力は -

10
2.5

それだけです。文字列入力のプロンプトすら出ません。今、私はそれについて読んでいましたが、正直なところ、私の理解にはまだいくつかのギャップがあります。私が理解できたのは、int 入力を取得してから、Enter キーを押したときに double 入力を取得した後だけでした。 nextLine()。

だから私のコードをこのようなものに変更する -

Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
double d = sc.nextDouble();
sc.nextLine();
String s = sc.nextLine();

System.out.println(i);
System.out.println(d);
System.out.println(s);

完璧に仕事をするので、これを使用してバイパスできる前の例のキーボードバッファーに格納されている "\n" のようなものに関連しています。

誰かがこれについての説明を手伝ってくれたら、教えてください。

于 2020-11-24T16:59:24.750 に答える
2

それ以外の

Scanner in = new Scanner(System.in);
String question;
question = in.next();

入力してください

Scanner in = new Scanner(System.in);
String question;
question = in.nextLine();

これは、入力としてスペースを取ることができるはずです。

于 2015-04-10T22:49:28.057 に答える