troubleshooting Question

How to fix "IllegalStateException" in my code

Avatar of Software Software
Software Software asked on
ProgrammingJavaAlgorithms
5 Comments1 Solution219 ViewsLast Modified:
Hello,
The program is about playing the next or previous song, replay or remove a song.
If I want to delete a song immediately after starting the program (case 5), I get an "IllegalStateException".
How do I fix the error?
If you see further errors or have improvements to the code, then you can also tell me.


import java.util.LinkedList;
import java.util.ListIterator;
import java.util.Scanner;

public class Songs {

    public static void main(String[] args) {

        LinkedList<String> songs = new LinkedList<>();
        songs.add("Song 1");
        songs.add("Song 2");
        songs.add("Song 3");
        songs.add("Song 4");
        songs.add("Song 5");
        songs.add("Song 6");

        Scanner scanner = new Scanner(System.in);
        boolean quit=false;
        boolean forward=true;
        ListIterator currentSong = songs.listIterator();

        printMenu();
        while(quit==false){
            switch(scanner.nextInt()){
                case 1:
                    printMenu();
                    break;
                case 2:
                    if(!forward){
                        if(currentSong.hasNext()){
                            currentSong.next();
                        }
                        forward=true;
                    }
                    if(currentSong.hasNext()){
                        System.out.println("Now playing " + currentSong.next());
                    }
                    else{
                        System.out.println("Reached the end of the playlist");
                    }
                    break;
                case 3:
                    if(forward){
                        if(currentSong.hasPrevious()){
                            currentSong.previous();
                        }
                        forward=false;
                    }
                    if(currentSong.hasPrevious()){
                        System.out.println("Now playing " + currentSong.previous());
                    }
                    else{
                        System.out.println("We are at the start of the playlist");
                    }
                    break;
                case 4:
                    if(currentSong.hasPrevious()){
                        currentSong.previous();
                        System.out.println("Replaying " + currentSong.next());
                    }
                    else if(currentSong.hasNext()){
                        currentSong.next();
                        System.out.println("Replaying " + currentSong.previous());
                    }
                    break;
                case 5:
                    if(songs.size()>0){
                        currentSong.remove();
                        if(currentSong.hasNext()){
                            currentSong.next();
                        }
                        else if(currentSong.hasPrevious()){
                            currentSong.previous();
                        }
                    }
                    break;
                case 6:
                    for(String song: songs){
                        System.out.println(song);
                    }
                    break;
                case 7:
                    quit=true;
                    break;
                default:
                    printMenu();
                    break;
            }
        }
    }

    private static void printMenu(){
        System.out.println("1 - Print Menu\n" +
                           "2 - Go to the next song\n" +
                           "3 - Go to previous song\n" +
                           "4 - Replay current song\n" +
                           "5 - Remove current song\n" +
                           "6 - Print all songs\n" +
                           "7 - Quit\n" +
                           "============================");
    }
}
ASKER CERTIFIED SOLUTION
Sathish David Kumar N
Architect

Our community of experts have been thoroughly vetted for their expertise and industry experience.

Join our community to see this answer!
Unlock 1 Answer and 5 Comments.
Start Free Trial
Learn from the best

Network and collaborate with thousands of CTOs, CISOs, and IT Pros rooting for you and your success.

Andrew Hancock - VMware vExpert
See if this solution works for you by signing up for a 7 day free trial.
Unlock 1 Answer and 5 Comments.
Try for 7 days

”The time we save is the biggest benefit of E-E to our team. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange.

-Mike Kapnisakis, Warner Bros