#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