我一直试图让它工作一段时间。我正在放入三个并行的空数组,并且错误地说没有找到行。它仅在我将while语句更改为元素数时才有效。我正在尝试制作大小为15的数组,但只填充前十个数组部分。
很抱歉,如果这听起来很复杂,但基本上我是想说数组的大小是15,我只有10个东西要输入数组,其余的应该是空白的。
while (text.hasNext() && c < nameArray.length) {
nameArray[count] = text.nextLine();
intArray[count] = text.nextDouble();
doubleArray[count] = text.nextInt();
text.nextLine();
c++;
}
这不起作用。
while (text.hasNext() && c < 9) {
nameArray[count] = text.nextLine();
intArray[count] = text.nextDouble();
doubleArray[count] = text.nextInt();
text.nextLine();
c++;
}
这样做。
答案 0 :(得分:1)
您在一个循环中读取文件TWICE。删除第二读: fileText.nextLine();
答案 1 :(得分:0)
在代码的第一个版本中,您尝试读取输入15次,但只输入10次。因此扫描仪会尝试读取新行,但它不存在。
答案 2 :(得分:0)
当然它不起作用。如果你需要循环到fileText长度和gameArray长度之间的最大值,你应该使用或代替和在循环中使用if。
尝试这样的事情:
while (fileText.hasNext() || count < gameArray.length) {
if (!fileText.hasNext()) {
gameArray[count] = "";
priceArray[count] = 0;
stockArray[count] = 0;
} else {
gameArray[count] = fileText.nextLine();
priceArray[count] = fileText.nextDouble();
stockArray[count] = fileText.nextInt();
fileText.nextLine();
}
count++;
}
答案 3 :(得分:0)
您的问题不在于数组的长度,而在于fileTest.nextLine()
。在某一点之后,没有nextLine()
可用。它适用于前9次,但我想在到达array.length
之前所有线路都已耗尽。我建议在你的while循环中只有一个条件:
while(fileText.hasNext()) {
}
这样您只会填写实际存在的金额。
答案 4 :(得分:0)
使用第二个fileText.nextLine()
添加另一项检查,以确保有一行要阅读。
while (fileText.hasNext() && count < gameArray.length) {
gameArray[count] = fileText.nextLine();
priceArray[count] = fileText.nextDouble();
stockArray[count] = fileText.nextInt();
if ( fileText.hasNext() )
fileText.nextLine();
count++;
}