没有带循环的元素异常

时间:2014-04-27 20:29:22

标签: java

我正在使用此代码,出于某种原因,我得到了一个没有这样的元素异常......

numCompanies正在从键盘导入并显示正确,投资组合是一个带有[numCompanies] [4]的数组。

任何人都可以找出原因吗?

for(int i = 0; i < numCompanies; i++)
{
    System.out.print("Stock #" + (i+1) + ": ");
    String stockData = kbReader.nextLine();
    System.out.print("\n\n hi" + stockData);
    Scanner stockLine = new Scanner(stockData);
    for(int j = 0; j < 4; j++)
    {
        portfolio[i][j] = stockLine.next();
    }
}

2 个答案:

答案 0 :(得分:1)

我没有对此进行过测试,但即使没有剩余元素,也可能调用stockLine.next();。所以这可能会有所帮助:

for(int j = 0; j < 4; j++)
{
    if( stockLine.hasNext() ) {
        portfolio[i][j] = stockLine.next();
    }
    else
    {
        portfolio[i][j] = 0; // or whatever you want it to be by default
    }
}

这将解决错误信息,但不是故障。

答案 1 :(得分:0)

您将一个字符串传递给Scanner对象,但我想说有更好的方法可以做到这一点。

如果你想简单地读入字符串中每个值的输入,用空格分隔,那么使用split()

String stockData = kbReader.nextLine();
String[] data = stockData.split(" ");
if (data.length != 4) {
    System.err.println("Bad data value found!");
} else {
    //run your loop
}