0

メニューとして機能する switch ステートメントがあります。これで、ユーザーの入力を読み取ろうとしています。現在、私は使用variable=in.next();していますが、これは機能します。ただし、1単語しか読み取らず、ユーザーがさらに入力する必要がある場合があるためvariable=in.nextLine();、コンパイルするを使用してみましたが、プログラムを実行すると、メニューから選択肢を選択すると、読み取りがスキップされてに戻りますメニュー。

助けていただければ幸いです、ありがとう:)

4

4 に答える 4

1

使用するだけです:

name=in.nextLine();

String choice = in.nextLine();

これは、コンストラクター内で、runApp の先頭にある必要があります。

そうすれば、バッファに新しい行を残すことはありません(たとえば に使用されますdp)。

あなたが持っている必要があります:

dp=in.nextLine();

あなたの質問で説明したように。

于 2010-11-26T22:07:47.660 に答える
1

\nユーザー入力から改行文字を削除するか、switch ステートメントに改行文字があると想定する必要があります。

nextLine() を使用することにしたため、コンピューターへのユーザー入力は次のようになります。

 f\n

したがって、それに応じて文字列を比較してください!

于 2010-11-26T21:31:55.147 に答える
-1

OK 私は Java が苦手で、質問の仕方がまずかったと思います。

ユーザーの入力を受け取るときは、たった 1 つの単語しか必要としません。基本的には、入力されたすべてのものを受け取りたいのですが、nextLine を使用すると、読み取りがスキップされ、選択肢の選択に戻ります。

于 2010-11-26T21:51:53.580 に答える
-1

スイッチ セレクターは、integer、short、char、または enum のみにすることができます。文字列はスイッチ セレクタとして使用できません。

私があなたを正しく理解していれば、ユーザーが入力した単語を使用してフローを制御したいと考えています。定義済みの単語リストがある場合は、enum を使用することをお勧めします。

enum Words {開始、停止、ビープ音、}

ここで、ユーザーはビープ音を入力します。あなたは言うことができます:

Words command = Words.valueOf();
///
switch (command) {
    case start: /* start something */ break;
    case stop: /* stop something */ break;
    case beep: /* beep!!! */ break;
    default: throw new IllegalArgumentException("Unknown command " + command);
}
于 2010-11-26T21:34:30.077 に答える