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