Cześć,
Mam problem z kodem w InteliJ. Kiedy w wywołanej metodzie przy pomocy Scannera inicjalizuję 3 zmienne, z czego dwie typu String, a potem za pomocą innej metody chcę je wyświetlić, to pierwsza w kolejności wyświetlania zmienna typu String jest pusta. Nie mam pojęcia z czego to wynika. Proszę o pomoc w znalezieniu błędu.
package Aplikacja;
import Dane.Song;
import Metody.AppLogic;
import java.util.Scanner;
public class CdBurnApp {
public static void main(String[] args) {
AppLogic appLogic = new AppLogic();
Scanner scanner = new Scanner(System.in);
int chooseOption = -1;
final int dodajPiosenke = 1;
final int wyswietlListe = 2;
final int zamknijProgram = 0;
do {
System.out.println("Witaj w programie do nagrywania plyt CD Audio. Wybierz opcje: ");
System.out.println(dodajPiosenke + " .Dodaj piosenke do listy");
System.out.println(wyswietlListe + " .Wyswietl zapisana liste");
System.out.println(zamknijProgram + " .Zamknij program");
chooseOption = scanner.nextInt();
switch (chooseOption) {
case dodajPiosenke:
Song song = new Song();
System.out.println("Podaj wykonawce: ");
song.setSinger(scanner.nextLine());
scanner.nextLine();
System.out.println("Podaj tytul utworu: ");
song.setSongTitle(scanner.nextLine());
System.out.println("Podaj czas trwania w sekundach: ");
song.setSongDuration(scanner.nextInt());
appLogic.addSong(song);
break;
case wyswietlListe:
appLogic.printInfo();
break;
case zamknijProgram:
System.out.println("Nastapi zamkniecie programu.");
break;
default:
System.out.println("Nieprawidlowy wybor!");
}
} while (chooseOption != zamknijProgram);
scanner.close();
}
}
package Dane;
public class Song {
private String singer;
private String songTitle;
private int songDuration;
public Song() {
}
public String getSinger() {
return singer;
}
public void setSinger(String singer) {
this.singer = singer;
}
public String getSongTitle() {
return songTitle;
}
public void setSongTitle(String songTitle) {
this.songTitle = songTitle;
}
public int getSongDuration() {
return songDuration;
}
public void setSongDuration(int songDuration) {
this.songDuration = songDuration;
}
public String getInfo(){
return ("" + singer + " - " + songTitle + ", " + songDuration + " sec");
// **zmienna singer nie jest wyświetlana, tak jakby nie była inicjalizowana**
}
}
Tutaj klasa z metodami
package Metody;
import Dane.Song;
public class AppLogic {
private final int durationLimit = 4800;
private int savedSpace = 0;
private final int maxSongNr = 50;
private int songList = 0;
Song[] songsTab = new Song[maxSongNr];
public void addSong(Song song){
if (savedSpace < durationLimit){
if (songList < maxSongNr){
savedSpace = savedSpace + song.getSongDuration();
songsTab[songList] = song;
songList++;
} else {
System.out.println("Przekroczono limit 40 utworow.");
}
} else {
System.out.println("Brak miejsca na plycie, przekroczono 80 min.");
}
}
public void printInfo(){
for (int i = 0; i < songList; i++)
System.out.println(songsTab[i].getInfo());
}
}