3

曲の配列から曲を検索するメソッドを含むプログラムを書いています。以下は、私に問題を引き起こしているこの特定のセクションのコードです。kybdはすでに開始されています。以下は、クラスのメソッドを使用したセクションのコードですsearchSong()

    System.out.println("To search for a song, enter the following:");
    System.out.print("Title: ");
    searchT = kybd.nextLine();
    System.out.print("Author: ");
    searchAu = kybd.nextLine();
    System.out.print("Interpreter: ");
    searchI = kybd.nextLine();
    System.out.print("Album: ");
    searchAl = kybd.nextLine();
    System.out.println("Found this:"+'\n'+lib.searchSong(searchT, searchAl, searchAu, searchI));

プログラムを実行すると、「タイトル」が表示されますが、検索語を入力できず、「作成者」に直接スキップされます。以下は私が得る出力です。

曲を検索するには、次のように入力します。
タイトル: 作成者:検索
通訳者: 検索
アルバム: 検索

なぜこれが起こっているのか、そしておそらくそれを修正する方法を誰かが私に説明できますか? コードを確認して再確認しましたが、わかりません。

解決しました!nextInt()以前、プログラムで別の方法を使用していました。@Rohit Jainが提案した質問でアドバイスを受け、nextLine()このコードセクションの前に空白を使用しましたが、今では機能します。ありがとう!

4

1 に答える 1

2

System.out.print("Title: ");に置き換える必要がありますSystem.out.println("Title: ");

私はそれを仮定しています

Scanner kybd = new Scanner(System.in);

kybd.nextLine()メソッドを見ているので

実際には、入力はスキップされません。ただそれだけでTitle:、の代わりにAuthor:隣り合って印刷されます。テキストを入力してエンターを押してみましたか?テキストを 2 回入力して入力することが許可されると確信しています。printprintln

于 2013-06-28T18:09:49.443 に答える