按下Enter键后,Java扫描仪不接受输入

时间:2018-08-04 15:27:38

标签: java intellij-idea java.util.scanner

这里是终极编程新手。完成有关Java的Udemy课程。与扫描仪的细节有些混淆。

应对Udemy课程中的挑战,在这种特定情况下,当我输入扫描仪信息后按Enter键时,它将继续进行下一行。因此,我可以按Enter数以千计,并且它一直在不断前进,而从未取得进展。在另一个项目中使用相同的代码似乎可以正常工作,但是这个特定项目则无效。

输入songName时,addSong方法出现问题。我已经包含了main方法,以防万一我犯了错误。主要方法中的扫描仪输入似乎工作正常。感谢您的帮助!

编辑信息:main方法中的choice变量可以正常工作。用户应该输入一个int来进行菜单选择,并且它可以按预期工作。问题出在songName方法中的字符串addSong上。输入任何字符串(例如“ Song 1”),然后按Enter键,光标仅在IntelliJ控制台中向下移动一行。这是无限期发生的。 IntelliJ控制台的图片附件,显示了在输入后几行光标。对不起,如果这没有什么意义!终极新手。

IntelliJ Console Cursor Position

public class Main {

   private static Scanner scanner = new Scanner(System.in);

   public static LinkedList addSong(LinkedList<Song> Playlist, ArrayList<Album> AlbumList){

    String songName;
    System.out.println("Enter song name: ");
    songName = scanner.nextLine();

    Song newSong = searchAlbums(songName,AlbumList);
    System.out.println("Accepted");
    if(newSong==null){
        System.out.println("Song does not exist.");
    } else {
        Playlist.add(newSong);
        System.out.println("Song added.");
    }



    return Playlist;
}

public static void main(String[] args) {
    ArrayList<Album> AlbumList = createAlbumList();
    LinkedList<Song> Playlist = createInitialPlaylist(AlbumList);

    boolean quit = false;
    int choice;

    while(!quit){
        System.out.println("================");
        System.out.println("Menu");
        System.out.println("1. Add Song to Playlist");
        System.out.println("2. View Playlist");
        System.out.println("3. View Current Song");
        System.out.println("4. Replay Current Song");
        System.out.println("5. Next Song");
        System.out.println("6. Previous Song");
        System.out.println("7. Remove Song from Playlist");
        System.out.println("8. Quit");
        choice = scanner.nextInt();
        scanner.nextLine();


        switch(choice){
            case 1:
                addSong(Playlist,AlbumList);
                break;
            case 2:
                viewPlaylist(Playlist);
                break;
            case 3:

                break;
            case 4:

                break;
            case 5:

                break;
            case 6:

                break;
            case 7:

                break;
            case 8:
                quit = true;
                break;
            default:
                System.out.println("Invalid choice. Choose 1-8");
                break;
        }
    }
}

public static Song searchAlbums(String songName, ArrayList<Album> AlbumList){
    Album tempAlbum;
    ArrayList<Song> tempSongList;
    Song tempSong;
    for(int i=0; i<AlbumList.size(); i++){
        tempAlbum = AlbumList.get(i);
        tempSongList = tempAlbum.getSongList();
        for(int j=0; j<tempSongList.size(); i++){
            tempSong = tempSongList.get(j);
            if(tempSong.getSongTitle().equals(songName)){
                return tempSong;
            }
        }
    }

    return null;
}

1 个答案:

答案 0 :(得分:0)

我认为我发现问题不是需要注意Scanner的问题是searchAlbum()方法中的循环,因为它由于无限循环而没有完成,因此您不断按下任何东西,但是它没有任何作用,因为循环仍在运行,
所以您需要修复内部循环,因为j不会增加到tempSongList

相关问题