2010-02-20 6 views
-2

Le code:Quel est le problème dans cette instruction if?

// message is a string , a1 is an integer array .. both well defined 
if(Integer.parseInt(Character.toString(message.charAt(i))) == (a1[i - 1] + a1[i])) { 
    ... 
    } 
+5

Quelle erreur obtenez-vous? –

+0

Veuillez formater votre code en mettant quatre espaces avant chaque ligne, ou en le sélectionnant et en appuyant sur le bouton "101010" dans l'éditeur. –

+0

C: \ Utilisateurs \ Dhruv \ Desktop \ Topcoder> javac * .java BinaryCode.java:29: début d'expression illégal if (Integer.parseInt (Character.toString (message.charAt (i)))) == ( a2 [i-1] + a2 [i])) ^ BinaryCode.java:29: ';' if (Integer.parseInt (Character.toString (message.charAt (i)))) == ( a2 [i-1] + a2 [i])) – higherDefender

Répondre

3

1 trop ) à la fin de charAt qui ferme votre si la condition.

+5

Le vrai problème est que la condition if est trop compliquée. En extrayant les parties dans des variables significatives, il serait plus facile à lire et peut-être ne pas devenir un problème. Par exemple, que signifie "a1 [i - 1] + a1 [i]"? Disons que c'est la somme attendue, puis assignez-la à la variable int expectedSum. Donc, à la fin, cette condition peut ressembler à "if (extractNumber == expectedSum)" qui est plus agréable aux yeux et plus facile à lire. – marklai

+0

Comme markali l'a souligné, le code n'est pas très lisible et ce genre de problème est à prévoir avec un code illisible. Ne soyez pas tenté d'écrire un tel code en supposant que l'assignation de certaines de ces expressions aux variables va ralentir votre programme. Ça n'arrivera pas. – e4c5

2

En dehors de l'erreur de syntaxe:

  1. Il est trop compliqué. Utilisez les variables locales pour calculer les résultats intermédiaires.

  2. Utilisez Character.getNumericValue(ch) au lieu de Integer.parseInt(Character.toString(ch)).

1

Qu'est-ce que i? Si c'est 0, a1[i - 1] lèverait une exception.

+1

Et si c'était <0 or > = a1.length, une exception serait également levée par le code fourni. –

+0

@SM - C'est vrai, mais les boucles sont généralement de '0' à' a.length - 1'. – fastcodejava

Questions connexes