2016-06-11 1 views
0

Le code fonctionne parfaitement bien sur IDE Eclipse mais Codechef, compilateur montre cette erreur:code fonctionne très bien dans Eclipse, mais jette NumberFormatException dans 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) 

Voici mon code:

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]); 
     } 
    } 
} 

J'ai même essayé d'utiliser la classe de scanner, mais en cela il montre NoSuchElementException.

+0

Eh bien, il semble que CodeChef ne fournisse aucune entrée sur 'System.in'. Êtes-vous sûr que vous devriez vous y attendre pour ce problème? –

+0

je ne sais pas j'ai essayé plusieurs fois mais j'ai vu des solutions d'autres codeurs aussi ils ont utilisé System.in et ils ont des soumissions succsessful – vidhit

+0

je pense que le compilateur de codechef est en panne parce que j'ai couru le code qui a été soumis avec succès et il montre le même erreur – vidhit

Répondre

0

Votre problème est ici:

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

vous essayez d'analyser en entier l'entrée, mais vous n'êtes pas en train de valider si l'entrée EST EFFECTIVEMENT CHOSE QUI PEUT ÊTRE analysables à integer

dont vous avez besoin pour valider l'entrée et seulement aller de l'avant lorsque l'entrée correcte est:

Exemple

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

alors que dois-je faire? – vidhit

+0

vous devez valider l'entrée et seulement aller de l'avant lorsque l'entrée correcte est .... –

+0

ok son fonctionnement j'ai choisi l'entrée personnalisée merci mais toujours sur codechef il n'est toujours pas accepté il montre l'erreur d'exécution (NZEC) bien que mon le code est en cours d'exécution sur le compilateur codechef – vidhit