[英]Java Scanner not accepting input when enter pressed
最终的编程新手。 完成有关Java的Udemy课程。 与扫描仪的细节有些混淆。
在应对Udemy课程的挑战时,在这种特定情况下,当我在输入扫描仪信息后按Enter键时,它将继续进行下一行。 因此,我可以按Enter数以千计,并且它一直在不断前进,而从未取得进展。 另一个项目中的相同代码似乎可以正常工作,但这个特定项目则无效。
输入songName时,addSong方法会出现问题。 我已经包含了main方法,以防万一我犯了错误。 主要方法中的扫描仪输入似乎工作正常。 谢谢你的帮助!
编辑信息:main方法中的choice
变量按预期工作。 用户应该输入一个int来进行菜单选择,并且它可以按预期工作。 问题在于addSong
方法中的字符串songName
。 输入任何字符串(例如“ Song 1”),然后按Enter键,光标仅在IntelliJ控制台中向下移动一行。 这是无限期发生的。 IntelliJ控制台的图片附件,显示了在输入后几行光标。 对不起,如果这没有什么意义! 终极新手。
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;
}
我认为我发现问题不是需要监视Scanner
是searchAlbum()
方法中的循环,因为由于无限循环而无法完成Scanner
,因此您不断按任何按钮,但由于循环而无法执行任何操作仍在运行
因此,您无需修改内部循环,因为j
不会递增以达到tempSongList
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.