Исключение FileNotFoundException и недопустимый ввод при разных запусках

#java

#java

Вопрос:

Я новичок в кодировании. В настоящее время я пытаюсь получить входное значение и извлечь информацию из файла csv и отформатировать ее в метод song (предварительно определенный) с помощью четырех выходных данных. Однако я не могу добраться до этого момента, потому что каждый раз, когда я пытаюсь запустить его, он сообщает, что не может его загрузить. Либо это, либо это автоматически приводит к значению по умолчанию в инструкции switch, чего я не понимаю. Сейчас я полностью потерян.

 import java.util.ArrayList;
import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
/**
 * @author chasestauts
 *
 */
public class JukeboxHero {

    public static void main(String args[]) {    
        final String MENU = "*****************************"    "n"   "*      Program Menu         *"   "n"   "*****************************"
                  "n"   "(L)oad catalog"   "n"   "(S)earch catalog"   "n"   "(A)nalyse catalog"   "n"   "(P)rint catalog"   "n"   "(Q)uit"
                  "n"   "n";
        final String cR = ("Please enter a command (press 'm' for Menu):");

        System.out.print(MENU   cR);
        Scanner input = new Scanner(System.in);
        String decision = input.nextLine();

        while(decision.equalsIgnoreCase("q") == false)
        {
            System.out.println(cR);
            decision = input.nextLine();
            switch (decision){
            case ("L"):
            {
                ArrayList<Song> songList = new ArrayList<Song>();
                System.out.println("Load Catalog..");
                System.out.print("Please enter filename: ");
                String filepath = input.nextLine();
                File songFile = new File(filepath);
                try 
                {
                    Scanner songScan = new Scanner(songFile);
                    while (songScan.hasNext())
                    {
                        String line  = songScan.nextLine();
                        Scanner lineScan = new Scanner(line);
                        lineScan.useDelimiter(",");
                        while (lineScan.hasNext())
                        {
                            String artist = lineScan.next();
                            String album = lineScan.next();
                            String title = lineScan.next();
                            int duration = lineScan.nextInt();
                            Song song = new Song(title, artist, album, duration);
                            songList.add(song);
                        }
                        lineScan.close();
                    }
                    songScan.close();
                    int size = songList.size()   1;
                    System.out.println("Successfully loaded "   size   " songs!");
                }
                catch (FileNotFoundException error)
                {
                    System.out.println("Sorry, unable to open file: "   filepath);
                }
            }
            break;
            case ("S"):
            {
                System.out.println();
                break;
            }
            case ("A"):
            {
                System.out.println();
                break;
            }
            case ("P"):
            {
                System.out.println();
                break;
            }
            case ("Q"):
            {
                System.out.println("Goodbye!");
                break;
            }
            case ("M"):
            {
                System.out.println(MENU);
                break;
            }
            default:
            {
                System.out.println("Invalid selection");
            }
            }
        }
        input.close();
    }
}
  

Комментарии:

1. Вы отлаживали свой код? Вы проверили значение decision ? Может ли оно содержать пробелы, символы нижнего регистра и т.д.? Этот комментарий «используется из stackoverflow для случая, case thing» указывает на то, что вы не знакомы с конструкцией switch-case, это правильно?

2. Не могли бы вы указать путь к файлу, указанный в качестве входных данных? Я использовал этот путь, он работает для меня. Файл songFile = новый файл («C:\stackoverflow\parseFile.csv «);

3. Можете ли вы добавить несколько фрагментов выходных данных, я не могу понять ваше объяснение

4. Где находится файл в вашей системе? Вы должны указать абсолютный путь к файлу, который вы читаете. Вы должны указать путь как «C:pathfolderfilename.csv » или в linux /usr/pathfolder/filename.cs, чтобы прочитать файл без исключения.

5. ***************************** * Меню программы * ***************************** ( L) каталог oad (Ы) каталог earch (A) каталог nalyse (P) каталог rint (Q) пользовательский интерфейс, пожалуйста, введите команду (нажмите «m» для меню): L Пожалуйста, введите команду (нажмите «m» для меню): L Загрузите каталог.. Пожалуйста, введите имя файла: music-collection.csv Извините, не удается открыть файл: music-collection.csv Пожалуйста, введите команду (нажмите «m» для меню): L Загрузить каталог.. Пожалуйста, введите имя файла: music-collection.csv Извините, не удается открыть файл: music-collection.csv Пожалуйста, введите команду (нажмите «m» для меню): l