Нет такого исключения элемента с циклом
Я использую этот код, и по какой-то причине я получаю исключение Нет такого элемента...
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 ответа
Я не проверял это, но, вероятно, 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
}
}
Это решит сообщение об ошибке, но не ошибку.
Вы передаете одну строку 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
}