Нет такого исключения элемента с циклом

Я использую этот код, и по какой-то причине я получаю исключение Нет такого элемента...

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
}
Другие вопросы по тегам