在while循环中找不到行?

时间:2014-01-27 22:25:59

标签: java arrays loops while-loop

我一直试图让它工作一段时间。我正在放入三个并行的空数组,并且错误地说没有找到行。它仅在我将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++;
    }

这样做。

5 个答案:

答案 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++;
}