阅读文本文件

问题描述:

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而不是实际列表,并且方向似乎正确。我不知道为什么会发生。

请在您的歌班中查看此处。

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

谢谢你非常非常......现在这个作品! –

的问题是在这里

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

参数是冠军,但你要指定标题(为空);

更改为:

title = Title; 
artist = Artist; 
+0

是的,我之前就知道这一点,刚刚变得粗心大意,甚至没有注意到XD –

的问题是在Song类,如(我)的意见解释说:

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