2016-06-11 5 views
0

код работает прекрасно на IDE Eclipse, но на Codechef, компилятор показывает эту ошибку:код прекрасно работает в Eclipse, но бросает NumberFormatException в CodeChef

Exception in thread "main" java.lang.NumberFormatException: null  
at java.lang.Integer.parseInt(Integer.java:542) 
at java.lang.Integer.parseInt(Integer.java:615) 
at Codechef.main(Main.java:19) 

Вот мой код:

import java.util.*; 
import java.lang.*; 
import java.io.*; 
class Codechef { 
    public static void main(String[] args) throws IOException 
    { 
     int x = 0, j = 0; 
     String s; 
     int counta = 0, countb = 0; 
     int countf[] = new int[5]; 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
     int i = Integer.parseInt(br.readLine()); 
     while (j < i) { 
      s = br.readLine(); 
      for (int k = 0; k < s.length(); k++) { 
       if (s.charAt(k) == 'a') { 
        counta++; 
       } 
       else { 
        countb++; 
       } 
      } 
      if (counta < countb) { 
       countf[j] = counta; 
      } 
      else { 
       countf[j] = countb; 
      } 
      j++; 
      counta = countb = 0; 
     } 

     for (int g = 0; g < i; g++) { 
      System.out.println(countf[g]); 
     } 
    } 
} 

Я даже попытался использовать класс сканера, но в нем показывался NoSuchElementException.

+0

Ну, похоже, что CodeChef не предоставляет никаких данных на 'System.in'. Вы уверены, что вам стоит ожидать этого? –

+0

Я не знаю, что я несколько раз пробовал, но я видел решения других кодеров, также они использовали System.in, и у них есть succsessful представления – vidhit

+0

Я думаю, что компилятор codechef не работает, потому что я запускал код, который был успешно отправлен, и он показывает такая же ошибка – vidhit

ответ

0

Ваша проблема здесь:

int i = Integer.parseInt(br.readLine()); 

вы пытаетесь разобрать на целое вход, но вы не проверка, если вход фактически то, что может быть разобран целочисленным

вам нужно для проверки ввода и идти только вперед, когда вход правильным является:

Пример

int i = -1; 
    while (i == -1) { 
     try { 
     i = Integer.parseInt(br.readLine()); 
     } catch (NumberFormatException e) { 
     System.out.println("Wrong input"); 
     } 
    } 
+0

, так что я должен делать? – vidhit

+0

вам нужно проверить вход и только идти вперед, когда правильный ввод ... –

+0

ОК его работа я выбрал пользовательский вход спасибо, но все еще на codechef он все еще не принимается, он показывает ошибку времени выполнения (NZEC), хотя мой код работает на компиляторе codechef – vidhit