0

Scanner名前と数字を含むオブジェクトにデータを書き込もうとしていますが、何らかの理由で、 (これはすべてと呼ばれるメソッド内で呼び出されますprivate void addPerson())で初期化した直後に名前のデータが失われます

    String addName = "Just an empty String."; 
    System.out.println(addName + " testing");  // (Just an empty String. testing)
    System.out.println("Name: ");       
    addName = input.nextLine(); 
    System.out.println(addName); // null no matter what is entered
    input.next();
    System.out.println(addName + " again"); // Still null ( again) 

名前を入力した直後に、名前が保存されているかどうかを確認しようとしましたが、保存されていません。最初の印刷は出力に登録されません。ENTERを押した後に次に表示されるのは最後の行でしたが、出力画面に「再び」表示されました。私が持ってinput.next()いる理由は、それがないと、整数の入力を要求するまで、プログラムがすべてを出力するからです。文字列をデフォルトのテキストに設定しても、ユーザー入力で別の名前に変更しようとすると、直後に文字列がnullになります。

最後に、整数に対して同じテストを実行すると、それらは完全に機能します。

私の文字列が何も保存しない原因について何か提案はありますか?

4

2 に答える 2

1

変数をどのように宣言しますinputか?

Scanner input = new Scanner(System.in);

再度印刷する場合は、次のaddNameように変更してください。

addName = input.next();
System.out.println("2. addName: " + addName);
于 2013-02-26T06:35:12.903 に答える
1

問題nexLine()にあると思います。ドキュメントは次のとおりです。

このスキャナーを現在の行を超えて進め、スキップされた入力を返します。このメソッドは、最後の行区切り記号を除いて、現在の行の残りを返します。位置は次の行の先頭に設定されます。

このメソッドは、行区切り文字を探して入力を検索し続けるため、行区切り記号が存在しない場合は、スキップする行を検索するすべての入力をバッファリングする場合があります。

戻り値:スキップされた行

おそらくnext()を使用できますか?

于 2013-02-26T06:36:27.760 に答える