Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于对象数组和从文件中读取下一行的Java错误_Java - Fatal编程技术网

关于对象数组和从文件中读取下一行的Java错误

关于对象数组和从文件中读取下一行的Java错误,java,Java,我的java代码有点问题。 我试图创建一个对象数组,允许从文本文件输入一行内容 这是我的代码: code withheld, solution found 这显然是用方法返回的大小初始化对象数组 我尝试创建一个循环,读取文件“songFile”中的每一行,但返回一个错误 以下是我的循环代码: code withheld, solution found 这是getLineAmt方法的代码: code withheld, solution found 出现此错误是因为您试图读取一行,但不确定是

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

这是我的代码:

code withheld, solution found
这显然是用方法返回的大小初始化对象数组

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

以下是我的循环代码:

code withheld, solution found
这是getLineAmt方法的代码:

code withheld, solution found

出现此错误是因为您试图读取一行,但不确定是否还有其他行要读取。在阅读下一行之前,您需要修改并添加以下检查

for (int i = 0; i < songArray.length; i++)
{
if(songFile.hasNext()){
songArray[i] = new Song(songFile.nextLine());
}
}
for(int i=0;i
您遇到此错误是因为您试图读取一行,但不确定是否还有其他行要读取。在阅读下一行之前,您需要修改并添加以下检查

for (int i = 0; i < songArray.length; i++)
{
if(songFile.hasNext()){
songArray[i] = new Song(songFile.nextLine());
}
}
for(int i=0;i
您的
getLineAmt(Scanner songFile)
方法在计算行数时正在使用您的文件。一旦该方法返回,您的
扫描器
就已经读取了该文件并到达了末尾

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

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

while(songFile.hasNextLine()) {
    songList.add(new Song(songFile.nextLine()));
}
List songList=new ArrayList();
while(songFile.hasNextLine()){
添加(新歌(songFile.nextLine());
}
您的
getLineAmt(Scanner songFile)
方法在计算行数时正在使用您的文件。一旦该方法返回,您的
扫描器
就已经读取了该文件并到达了末尾

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

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

while(songFile.hasNextLine()) {
    songList.add(new Song(songFile.nextLine()));
}
List songList=new ArrayList();
while(songFile.hasNextLine()){
添加(新歌(songFile.nextLine());
}


您正在计算歌曲文件中的行数,因此您处于流的末尾,因此当您调用nextLine()时,没有一行。使用
ArrayList
而不是
Song[]的数组,
那么你根本不需要计算行数。

你在计算Song文件中的行数,所以你是在流的末尾,所以当你调用nextLine()时没有行数。使用
ArrayList
而不是
Song[]的数组,
那么您根本不需要计算行数。

它“返回”什么错误?线程“main”java.util.NoSuchElementException中的异常:在mainProgram.main(mainProgram.java:23)的java.util.Scanner.nextLine(未知源代码)中找不到行第23行是for循环中的代码演示如何初始化songFile??您可以发布getLineAmt()方法的代码吗?它“返回”了什么错误?线程“main”java.util.NoSuchElementException中的异常:在mainProgram.main(mainProgram.java:23)的java.util.Scanner.nextLine(未知源代码)中找不到任何行第23行是for loopShow中的代码向我们展示如何初始化songFile??您可以发布getLineAmt()方法的代码吗?这修复了错误,但当尝试从songArray[1]读取变量时,它只显示null。对于任何其他数字都一样。这修复了错误,但当尝试从songArray[1]读取变量时,它只显示null。线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:6在Song中。(Song.java:17)在mainProgram.main中(mainProgram.java:22)这看起来像是Song构造函数中的问题。你有没有单独测试过Song类以确保它能正常工作?我有,我制作了一个“Song”对象,只使用了第一行。构造函数是一个字符串。字符串是由逗号分隔的几个特征,我使用了“.split(“,”)函数来获取这些变量。看到错误,似乎是我上次的拆分导致了错误……然后您可能需要验证“songCollection.txt”文件中的数据。或者尝试在调试器中运行该程序以查看发生了什么。没有Song.java的代码和数据文件,很难说更多。谢谢你的帮助。删除最后一个“拆分”似乎解决了问题。我将尝试为此做一个变通。:)ArrayList可以工作,但是数组中的每一项似乎都是来自最后一行的数据。。。。有没有办法解决这个问题?线程“main”java.lang.ArrayIndexOutOfBoundsException:6在Song。(Song.java:17)在mainProgram.main(mainProgram.java:22)这看起来像是Song构造函数中的问题。你有没有单独测试过Song类以确保它能正常工作?我有,我制作了一个“Song”对象,只使用了第一行。构造函数是一个字符串。字符串是由逗号分隔的几个特征,我使用了“.split(“,”)函数来获取这些变量。看到错误,似乎是我上次的拆分导致了错误……然后您可能需要验证“songCollection.txt”文件中的数据。或者尝试在调试器中运行该程序以查看发生了什么。没有Song.java的代码和数据文件,很难说更多。谢谢你的帮助。删除最后一个“拆分”似乎解决了问题。我将尝试为此做一个变通。:)ArrayList可以工作,但是数组中的每一项似乎都是来自最后一行的数据。。。。有办法解决这个问题吗?