Bonjour,
Je voudrais faire cela :
Le problème c'est que NetBeans me met "Illegal start of expression"Envoyé par Ce que je veux faire
Est-ce possible de lever une exception contenue dans un if ?
Si oui comment ?
Bonjour,
Je voudrais faire cela :
Le problème c'est que NetBeans me met "Illegal start of expression"Envoyé par Ce que je veux faire
Est-ce possible de lever une exception contenue dans un if ?
Si oui comment ?
Le code suivant fonctionne très bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 try { if (!Tcalcul[i].equals("+")) { // ce que je fais dans le if } } catch( java.lang.ArrayIndexOutOfBoundsException e) { }
C'est surement que mon "try" ne devait pas prendre tout le if. Je ne sais pas pourquoi il ne voulait pas
Désolé pour mon double poste, mais autrement le topic ne sera pas UP.
Alors oui le try{}catch(){} marche mais après tout mes if en dessous ne vont plus !
Si je catch le premier if, ce qui est en dessous n'iras plus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 private void calcul(String[] Tcalcul) { //initialise les variables String sTempChiffre = ""; double tempChiffre = 0; double tempChiffre2 = 0; String signe = ""; //tant quil est plus petit que la longueur du tableau for(int i = 0; i< Tcalcul.length+1; i++){ //si c'est un chiffre ou un point if (!Tcalcul[i].equals("+") && !Tcalcul[i].equals("-") && !Tcalcul[i].equals("*") && !Tcalcul[i].equals("/") && !Tcalcul[i].equals("")) { //alors on ajoute à un string le chiffre ou le point -> sTempChiffre sTempChiffre = sTempChiffre + Tcalcul[i]; System.out.println("sTempChiffre = " + sTempChiffre); } //si c'est vide else if (Tcalcul[i].equals("")){ } //si c'est un + - * / else{ System.out.println("egal"+Tcalcul[i]); //si la variable tempChiffre est vide if(tempChiffre == 0){ //alors on met le sTempsChiffre en int tempChiffre = Double.parseDouble(sTempChiffre); } //la variable est deja remplis else { tempChiffre2 = Double.parseDouble(sTempChiffre); } //on vide sTempChiffre sTempChiffre = ""; //on fait le calcul (avec des if) //si on ne connais pas le premier signe if(signe.equals("")){ signe = Tcalcul[i]; } //si oui on calcul else if(!signe.equals("")){ if(signe.equals("+")){ result = tempChiffre + tempChiffre2; tempChiffre = 0; tempChiffre2 = 0; signe = ""; } else if(signe.equals("-")){ result = tempChiffre - tempChiffre2; } else if(signe.equals("*")){ result = tempChiffre * tempChiffre2; } else if(signe.equals("/")){ result = tempChiffre / tempChiffre2; } else{ } } else{ } } } //on passe la reponse en texte sResult = ""; sResult += result; container_NORTH._reponse.setText(sResult); }
Pourquoi ?
Parce que si une exception est levée alors le traitement contenu dans le try est interrompu. Plutôt que faire un try/catch global, limite le à l'endroit de premier if.
En même temps c'est une erreur dans ton cas de compter sur le lancement d'une exception, il serait plus simple et efficace de tester l'index par rapport à la taille du tableau.
Je voulais que la boucle s'exécute une fois de plus que le nombre de case du tableau mais je vais changer de technique.
Partager