2014-01-18 4 views
-1

Что случилось с моим кодом? В принципе, есть меню, и пользователь выбирает номер. После выбора «1» они могут перейти ко второму методу readData и выбрать другой номер. Если они выбирают «2», это работает; однако, если они выбирают «3» (метод bestSeller), я получаю ошибку исключения.Ошибка: Исключение из потока "main" java.lang.NullPointerException

ответ

1

В способе Read_Data(...) вы увеличиваете значение c (которое вы инициализировали 0) перед выполнением операций. Вы должны увеличить его в конце while-loop:

while ((text = readFile.readLine()) != null){ 
    // ... your stuff 
    // ... 
    c += 1; // At the end 
} 

Edit:

В методе displayData(...) ваш forинициализации и условие значения не правы. Попробуйте изменить эту строку

for (int i = 1; i <= dc; i++) { 

в

for (int i = 0; i < dc; i++) { 

Edit 2:

В bestSeller(...) методе вы j от повторяется для 0 в 100 (длина массива). Это вызывает исключение, вы можете использовать фактическое количество прочитанных данных.

for (int j = 0; j < sortC - 1; j++) { 
    for (int k = j + 1; k < sortC; k++) { 

С этими изменениями я получаю, для варианта 3 (Bestseller), ожидаемого результат (после изменения значений объема в .txt)

POP  Beatles8  Let It Be  18.0 
POP  Beatles7  Let It Be  17.0 
POP  Beatles6  Let It Be  16.0 
POP  Beatles5  Let It Be  15.0 
POP  Beatles1  Let It Be  13.0 
POP  Beatles2  Let It Be  12.0 
POP  Beatles3  Let It Be  11.0 
POP  Beatles4  Let It Be  10.0 
+0

Хорошо, я переехал счетчик на конец и первое значение не является нулевым в методе Best_Seller/bestSeller. Однако метод readData теперь не работает. Я получаю еще одну ошибку исключения. – user2913362

+0

Не могли бы вы предоставить файл, из которого вы читаете данные? – Christian

+0

Я отредактировал свое оригинальное сообщение. – user2913362

Смежные вопросы