Я пытаюсь написать метод, который добавит информацию о песне (ввод пользователя) в базу данных. Когда пользователь добавит детали композиции (имя, исполнитель, размер файла, продолжительность), их следует сохранить в первом свободном слоте для песни (всего 4 слота для песни), а затем вернуться к интерфейсу меню.Переменные являются нулевыми, даже после присвоения им значения (Java)
Но когда я пытаюсь добавить вторую песню, первый слот всегда пуст, как если бы данные пользовательские входы не были сохранены. Я пробовал переходить через отладчик, и когда я ввожу имя, исполнителя и т. Д., Они все сохраняются в объекте song1. Но когда я вернусь, чтобы ввести вторую песню, объект song1 имеет значения: name = null, artist = null, filesize = 0, duration = 0.
Я был здесь уже часами и сегодня действительно смущенный, любая помощь будет потрясающей!
класс SongDatabase: класс
public class SongDatabase {
Scanner console = new Scanner(System.in);
public void addNewSong() {
Song song1 = new Song();
Song song2 = new Song();
Song song3 = new Song();
Song song4 = new Song();
if (song1.isEmpty()) {
System.out.println("Name of song:");
song1.setName(console.next());
System.out.println("Artist:");
song1.setArtist(console.next());
System.out.println("File size (MB):");
song1.setFileSize(console.nextInt());
System.out.println("Duration (seconds):");
song1.setDuration(console.nextInt());
System.out.println("Song successfully added.");
System.out.println("");
}
else if (song2.isEmpty()) {
System.out.println("Name of song:");
song2.setName(console.next());
System.out.println("Artist:");
song2.setArtist(console.next());
System.out.println("File size (MB):");
song2.setFileSize(console.nextInt());
System.out.println("Duration (seconds):");
song2.setDuration(console.nextInt());
System.out.println("Song successfully added.");
System.out.println("");
}
else if (song3.isEmpty()) {
System.out.println("Name of song:");
song3.setName(console.next());
System.out.println("Artist:");
song3.setArtist(console.next());
System.out.println("File size (MB):");
song3.setFileSize(console.nextInt());
System.out.println("Duration (seconds):");
song3.setDuration(console.nextInt());
System.out.println("Song successfully added.");
System.out.println("");
}
else if (song4.isEmpty()) {
System.out.println("Name of song:");
song4.setName(console.next());
System.out.println("Artist:");
song4.setArtist(console.next());
System.out.println("File size (MB):");
song4.setFileSize(console.nextInt());
System.out.println("Duration (seconds):");
song4.setDuration(console.nextInt());
System.out.println("Song successfully added.");
System.out.println("");
}
else {
System.out.println("The database is currently full. Please delete a song before adding a new one.");
}
Песня:
public class Song {
private String name, artist;
private int fileSize, duration;
public Song(String name, String artist, int fileSize, int duration) {
name = "";
artist = "";
fileSize = 0;
duration = 0;
}
public Song(){}
public boolean isEmpty() {
if (this.name == null && this.artist == null && this.fileSize == 0 && this.duration == 0) return true;
else return false;
}
public void setName(String inputName) {
inputName = name;
}
public String getName() {
return name;
}
public void setArtist(String inputArtist) {
artist = inputArtist;
}
public String getArtist() {
return artist;
}
public void setFileSize(int inputFileSize) {
if (inputFileSize>0){
fileSize = inputFileSize;
}
}
public int getFileSize() {
return fileSize;
}
public void setDuration(int inputDuration) {
if (inputDuration>0) {
duration = inputDuration;
}
}
public int getDuration() {
return duration;
}
}
Я очень рекомендую изучить массивы. – chrylis
ваша программа имеет много избыточного кода, реорганизуйте его. Поместите этот код в метод. – underdog