4

ユーザー入力文字列を返すのに問題があります。私がコードを持っている場合:

System.out.println("please enter a digit: ");
number1 = in.nextInt();
System.out.println("enter another digit: ");
number2 = in.nextInt();
System.out.println("enter a string: ");
string = in.nextLine();
//calculations

System.out.println(number1);
System.out.println(number2);
System.out.println(string);

数字は出力しますが、文字列は出力しません。解決策はとてもシンプルな気がしますが、今は頭がおならをしています。どんな助けでもいただければ幸いです!

4

4 に答える 4

8

文字列を読み込むためin.nextLine()に呼び出す前に、extra を呼び出す必要があります。in.nextLine()余分な改行文字を消費することです。

説明として、この入力を例として使用しましょう。

23[Enter]
43[Enter]
Somestring[Enter]

(23 と 43 は任意の数字です。重要な部分は改行です)

in.nextLine()前の からの改行、特に上記の例のin.nextInt()後の改行文字を使用するには、を呼び出す必要があります。43

nextInt()可能な限り多くの数字を消費し、次の文字が数字以外の場合に停止するため、新しい行がそこにあります。nextLine()新しい行に遭遇するまですべてを読み取ります。nextLine()そのため、 の後の改行を削除して、次の行の43を読み進めることができるようにするための追加が必要です。Somestring

たとえば、入力が次のような場合:

23 43 Somestring[Enter]

Enter を押さずに入力を続けると、現在のコードには文字列が表示されます (これは になります Somestring。スペースに注意してください) 43

于 2012-09-23T14:46:20.243 に答える
4

この線

int number2 = in.nextInt();

文字列をステートメントに渡します

string = in.nextLine();

番号を入力して ENTER を押したとき。Scanner.nextLine()別の文字列を読み取る前にこの文字列を使用すると、問題が解決します。

...
number2 = in.nextInt();
in.nextLine();
System.out.println("enter a string: ");
string = in.nextLine();
...
于 2012-09-23T14:45:38.763 に答える
1

あなたの場合in.next()、間にスペースがなければ文字列を読むのに十分でしょう。

于 2012-09-23T14:50:32.147 に答える
1

文字列 xxx;

スキャナ番号 1 = 新しいスキャナ(System.in)

xxx = number1.nextLine();

于 2012-09-23T14:51:22.407 に答える