2015-10-14 123 views
-1
public class Song 
{ 
private String title; 
private String artist; 

public Song (String Title, String Artist) 
{ 
    Title = title; 
    Artist = artist; 
} 
public String toString() 
{ 
    return (title +" "+ artist); 
} 
} 


閱讀文本文件

import java.io.File; 
import java.io.IOException; 
import java.util.Scanner; 

public class compactDisc 
{ 
private Song[] arr = new Song[20]; 
private int numSongs = 0; 
public compactDisc() throws IOException 
{ 
    int i=0; 

    File file = new File ("song.txt"); 
    Scanner inputFile = new Scanner(file); 

    while (inputFile.hasNext()&& i<arr.length) 
    { 
     String Title = inputFile.nextLine(); 
     String Artist = inputFile.nextLine(); 
     arr[i] = new Song(Title,Artist); 
     i++; 
    } 
    numSongs = i; 
} 

public String toString() 
{ 
    String str = ""; 
    for (int j = 0; j < numSongs; j++) 
    { 
     str += arr[j].toString(); 
    } 
     return str; 
} 
} 


import java.io.IOException; 
import java.util.Scanner; 

public class collection 
{ 

public static void main(String[] args) throws IOException 
{ 
    compactDisc cd = new compactDisc(); 
    System.out.println(cd); 
} 
} 

這個程序是顯示的歌曲列表和藝術家的時候,我的程序只打印出一堆「空」 S光盤。歌曲類是我的打印格式,compactDisc類讀取一個包含歌曲和藝術家列表的文件到一個數組中,主程序打印它們。但是,當我運行該程序時,它會打印出null nullnull nullnull nullnull nullnull nullnull null而不是實際列表,並且方向似乎正確。我不知道爲什麼會發生。

回答

3

請在您的歌班中查看此處。

private String title; 
private String artist; 

public Song (String Title, String Artist) { 
    Title = title; 
    Artist = artist; 
} 

您正在將未從您的Song類初始化的空值賦值給參數,因此您的類變量永遠不會被填充。

應該比較像這樣

public class Song { 
    private String title; 
    private String artist; 

    public Song (String title, String artist) { 
     this.title = title; 
     this.artist = artist; 
    } 
} 

同樣按照約定類應以大寫字母開頭和變量應該用小字母開頭。

+0

謝謝你非常非常......現在這個作品! –

0

的問題是在這裏

public Song (String Title, String Artist) 
{ 
    Title = title; 
    Artist = artist; 
} 

參數是冠軍,但你要指定標題(爲空);

更改爲:

title = Title; 
artist = Artist; 
+0

是的,我之前就知道這一點,剛剛變得粗心大意,甚至沒有注意到XD –

0

的問題是在Song類,如(我)的意見解釋說:

public Song (String Title, String Artist) 
{ 
    Title = title; // assigns this.title into local Title 
    Artist = artist; // assigns this.artist into local Artist 
}