私は Java の 2 学期目に入ったばかりなので、おそらく私の問題に対する非常に簡単な解決策があると思いますが、そのために何時間も髪を引っ張っています。次のコードは、ユーザー入力を収集し、インスタンスの情報を配列に格納するために使用されています。
アルバム名は何も入力する機会がありません。出力は次のとおりです。
5曲入ります
Title: title
Author: author1
Interpreter : int1
リリース年: 2000
Album: File name: // なぜこれは入力を集めて File name: を次の行に配置しないのですか?
誰かが私を正しい方向に向けることができれば、私はそれを大いに感謝します. 私の問題に関係がある場合に備えて、以下の2つの方法を含めました. ご協力いただきありがとうございます。
public static void main(String[] args){
Scanner kybd = new Scanner(System.in);
Song[] songTest = new Song[5];
System.out.println("Enter 5 songs\n");
//TEST
for(Song x:songTest)
{
x = new Song();
System.out.print("Title: ");
x.setTitle(kybd.nextLine());
System.out.print("Author: ");
x.setAuthor(kybd.nextLine());
System.out.print("Interpreter: ");
x.setInterpreter(kybd.nextLine());
System.out.print("Year released: ");
x.setYearReleased(kybd.nextInt());
System.out.print("Album: ");
x.setAlbum(kybd.nextLine()); //this doesn't allow for input. it prints "File name:" and skips the user input for an album name. Also, when I comment out Year released, the problem goes away.
System.out.print("File name: ");
x.setFileName(kybd.nextLine());
System.out.print(x);
System.out.println();
}
public void setYearReleased(int y)
{
if (y>0 && y<2013)
this.yearReleased = y;
else
{
System.out.print ("This song is not that old");
this.yearReleased = -5;
}
}
public void setAlbum(String a)
{
this.album = a;
}