1

我的java代码有点问题。我正在尝试创建一个允许从文本文件输入一行的对象数组。

这是我的代码:

code withheld, solution found

这显然会使用从该方法返回的大小初始化一个对象数组。

我尝试创建一个循环,从文件“songFile”中读取每一行但返回错误。

这是我的循环代码:

code withheld, solution found

这是 getLineAmt 方法的代码:

code withheld, solution found
4

3 回答 3

1

getLineAmt(Scanner songFile)在计算行数时,您的方法正在使用您的文件。一旦方法返回,您Scanner已经阅读了文件并到达了结尾。

解决这个问题的一种方法是简单地使用List对象而不是数组,这样您就不需要提前知道文件的大小或文件。

List<Song> songList = new ArrayList<Song>();

while(songFile.hasNextLine()) {
    songList.add(new Song(songFile.nextLine()));
}
于 2013-10-22T04:28:38.417 回答
0

您收到此错误是因为您尝试读取一行而没有确定是否还有更多行要读取。在阅读下一行之前需要修改并添加以下检查

for (int i = 0; i < songArray.length; i++)
{
if(songFile.hasNext()){
songArray[i] = new Song(songFile.nextLine());
}
}
于 2013-10-22T04:25:17.387 回答
0

您正在计算歌曲文件中的行数,因此您处于流的末尾,因此当您调用 nextLine() 时,没有行数。使用 anArrayList<Song>而不是 array of Song[],then 你根本不需要计算行数。

于 2013-10-22T04:28:38.667 回答