У меня проблемы с этим кодом. Это неполное, но сейчас моя цель - проверить, работает ли меню. В основном я пытаюсь реализовать меню. Если введен неверный символ, продолжайте предлагать правильный выбор. Подсказка: Внедрите Quit перед реализацией других опций. Не могу понять, что я делаю неправильно, чтобы получить эту ошибку.NoSuchElement в моем коде
import java.util.Scanner;
public class Playlist
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
String title = "";
System.out.println("Enter playlist's title: ");
title = input.nextLine();
printMenu(title);
}
// Implement the printMenu() method.
// printMenu() takes the playlist title as a parameter and outputs a menu of options to manipulate the playlist.
// Each option is represented by a single character.
// Build and output the menu within the method.
public static void printMenu(String playlistTitle)
{
Scanner input = new Scanner(System.in);
boolean menu = true;
String option;
SongEntry songentry = new SongEntry();
System.out.println(playlistTitle + " PLAYLIST MENU");
System.out.println("a - Add song");
System.out.println("d - Remove song");
System.out.println("c - Change position of song");
System.out.println("s - Output songs by specific artist");
System.out.println("t - Output total time of playlist (in seconds)");
System.out.println("o - Output full playlist");
System.out.println("q - Quit");
System.out.println("");
while(menu == true)
{
System.out.println("Choose an option: ");
switch(option = input.next())
{
case "q":
menu = false;
break;
case "o":
System.out.println(playlistTitle + " - OUTPUT FULL PLAYLIST");
break;
case "a":
System.out.println("ADD SONG");
System.out.println("Enter song's unique ID: ");
System.out.println("Enter song's name: ");
System.out.println("Enter artist's name: ");
System.out.println("Enter song's length: ");
break;
case "d":
System.out.println("REMOVE SONG");
System.out.println("Enter a song's unique ID: ");
System.out.println(" removed");
break;
case "c":
System.out.println("CHANGE POSITION OF SONG");
System.out.println("Enter a song's current position: ");
System.out.println("Enter a new position for song: ");
System.out.println(" moved to position ");
break;
case "s":
System.out.println("OUTPUT SONGS BY SPECIFIC ARTIST");
System.out.println("Enter artist's name: ");
break;
case "t":
System.out.println("OUTPUT TOTAL TIME OF PLAYLIST (IN SECONDS)");
System.out.println("Total time: seconds");
break;
}
}
}
}
Когда я бегу, я получаю:
Исключение в потоке "основного" java.util.NoSuchElementException на java.util.Scanner.throwFor (Scanner.java:907) в java.util. Scanner.next (Scanner.java:1416) в Playlist.printMenu (Playlist.java:45) в Playlist.main (Playlist.java:12)
Спасибо за помощь заранее.
Вы должны проверить, есть ли у сканера что-либо в своем буфере через 'input.hasNext()' перед вызовом 'input.next()'. –
Возможный дубликат [Нет исключения такого элемента?] (Http://stackoverflow.com/questions/8032099/no-such-element-exception) –
Вы никогда не должны проверять '== true'. – shmosel