2012-07-19 3 views
2

Salut iam incapable de comprendre l'erreur d'exécution dans le problème ci-dessous, S'il vous plaît quelqu'un peut-il résoudreImpossible de comprendre l'erreur d'exécution dans le code ci-dessous

import java.util.Scanner; 

class Solution6 { 
    public static void main(String[] args) 
    { 
     boolean condition = false; 
     do 
     { 
      Scanner scanner = new Scanner(System.in); 
      String value = scanner.nextLine(); 
      condition = value.equalsIgnoreCase("exit"); 
      if(!condition && value.contains(",")) 
      { 
       calculate(value); 
      } 
     } while (!condition); 
    } 

    private static void calculate(String value) 
    { 
     final String[] event1 = value.split(","); 
     int ss = 0; 
     for (int i = 0; i < event1[0].length(); ++i) 
     { 
      char c = event1[0].charAt(i); 
      ss += (int) c; 
     } 
     int sd = 0; 
     for (int i = 0; i < event1[1].length(); ++i) 
     { 
      char c = event1[1].charAt(i); 
      sd += (int) c; 
     } 

     System.out.println(ss-sd); 
    } 
} 
+0

Sur quelle ligne obtenez-vous l'exception? –

+0

lorsque l'essayer en eclipse ne donne aucune exception, j'ai mis ce code dans le site d'examen en ligne, le site le respectera, apres la compilation dire erreur d'execution, mais ne pas fournir quelle ligne ou nom d'exception – developer

+0

Alors essayez-le sur votre ordinateur, il vous dira sur quelle ligne l'exception est survenue. Nous avons besoin de plus de détails sur le problème, afin que nous puissions vous aider. –

Répondre

4

Le problème est que si l'utilisateur fournit une entrée par une virgule (,) et la virgule est le dernier caractère (ou le seul caractère), alors event1 aura au plus 1 élément: event1[0]. L'élément event1[1] n'existe pas, donc vous obtenez un ArrayIndexOutOfBoundsException.

Cela se produit uniquement si l'entrée est comme ceci: bgh,, afsfgf, ou même ,.

Vous pouvez résoudre ce problème en vérifiant le nombre d'éléments que contient le tableau event1.