按下enter键时,Java扫描仪不接受输入

按下enter键时,Java扫描仪不接受输入,java,intellij-idea,java.util.scanner,Java,Intellij Idea,Java.util.scanner,这里的终极编程新手。学习我的Java课程。对扫描仪的细节有点困惑 在我的课程中,当我输入扫描器的信息后按enter键时,它会转到下一行并继续这样做。所以我可以按enter上千次,它一直在不停地前进。在另一个项目中,相同的代码似乎可以工作,但这个特定的项目不会 输入songName时,addSong方法会出现问题。我已经包括了主要的方法,以防我犯的错误在那里。主方法中的扫描仪输入似乎工作正常。谢谢你的帮助 编辑信息:主方法中的选项变量按预期工作。用户需要为菜单选择输入一个int,它可以按预期工作。

这里的终极编程新手。学习我的Java课程。对扫描仪的细节有点困惑

在我的课程中,当我输入扫描器的信息后按enter键时,它会转到下一行并继续这样做。所以我可以按enter上千次,它一直在不停地前进。在另一个项目中,相同的代码似乎可以工作,但这个特定的项目不会

输入songName时,addSong方法会出现问题。我已经包括了主要的方法,以防我犯的错误在那里。主方法中的扫描仪输入似乎工作正常。谢谢你的帮助

编辑信息:主方法中的
选项
变量按预期工作。用户需要为菜单选择输入一个int,它可以按预期工作。问题在于
addSong
方法中的字符串
songName
。输入任何字符串(例如“Song 1”)并按enter键,光标只需在IntelliJ控制台中向下移动一行即可。这种情况会无限期地发生。附上IntelliJ控制台的图像,显示输入后向下几行的光标。抱歉,如果这没有多大意义!终极新手

公共类主{
专用静态扫描仪=新扫描仪(System.in);
公共静态LinkedList addSong(LinkedList播放列表、ArrayList相册列表){
字符串词名;
System.out.println(“输入歌曲名称:”);
songName=scanner.nextLine();
Song newSong=searchAlbums(歌曲名称、专辑列表);
系统输出打印项次(“接受”);
if(newSong==null){
System.out.println(“歌曲不存在”);
}否则{
播放列表。添加(新闻歌曲);
System.out.println(“歌曲添加”);
}
返回播放列表;
}
公共静态void main(字符串[]args){
ArrayList AlbumList=createAlbumList();
LinkedList Playlist=创建初始播放列表(AlbumList);
布尔退出=假;
智力选择;
而(!退出){
System.out.println(“============================”);
System.out.println(“菜单”);
System.out.println(“1.将歌曲添加到播放列表”);
System.out.println(“2.查看播放列表”);
System.out.println(“3.查看当前歌曲”);
System.out.println(“4.重放当前歌曲”);
System.out.println(“5.下一首歌”);
System.out.println(“6.前一首歌”);
System.out.println(“7.从播放列表中删除歌曲”);
System.out.println(“8.Quit”);
选项=scanner.nextInt();
scanner.nextLine();
开关(选择){
案例1:
addSong(播放列表、专辑列表);
打破
案例2:
查看播放列表(播放列表);
打破
案例3:
打破
案例4:
打破
案例5:
打破
案例6:
打破
案例7:
打破
案例8:
退出=真;
打破
违约:
System.out.println(“无效选择。选择1-8”);
打破
}
}
}
公共静态歌曲搜索相册(字符串songName、ArrayList相册列表){
相册;
ArrayList临时歌曲列表;
歌拍歌;

对于(int i=0;i我想我发现了问题,需要监视的不是
扫描仪
,而是
searchAlbum()中的循环
方法,因为它由于无限循环而无法完成,所以您一直按任何键,但由于循环仍在运行,所以它什么也不做,
因此您需要修复内部循环,因为
j
不会增加以达到tempSongList

基于您发布的代码,您可以永远按enter键,而不会更新
选项我会告诉我们你提供了什么输入,你得到了什么输出,以及它与你期望的输出有多大的偏差。我们不是读心术的人。对不起,不知道需要多少信息。在顶部的帖子中编辑了更多内容。
选项
变量起作用。该变量已更新,并且似乎按预期工作。它是
歌曲名
addSong
方法中的字符串,该方法提供了按enter forever键的问题。我认为问题出在这一行
searchAlbums(songName,AlbumList);
代码确实打印了这一行
System.out.println(“输入歌曲名称:”)
来自addSong方法。当它允许用户输入文本时,但按enter键会一直保持不变。之后它会打印任何行。请提供函数SearchAlbum的代码您是对的!非常感谢您帮助一位新手并让我到别处看看。
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;
}