我正在使用此代码,出于某种原因,我得到了一个没有这样的元素异常......
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();
}
}
答案 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
}