Switch(dir){

Switch(dir){ - Java - Programmation

Marsh Posté le 11-05-2004 à 07:07:54    

Bonjour tout le monde !
eclipse me met une erreur sur l'accolade apres un switch(dir),
je sais pas trop d'ou sa vient et sa m'embete vu que c'est la derniere erreur de mon projet:/
si quelqu'un avait la solution =) sa m'aiderai bien !
merci les gens  :bounce:  
www.mabulle.fr.st/PasCavalier.java


---------------
-3dB
Reply

Marsh Posté le 11-05-2004 à 07:07:54   

Reply

Marsh Posté le 11-05-2004 à 07:28:44    

c'est normal, tu ne traite pas tous les cas possibles, rajoute une clause default dans ton switch. dans ce default tu peux lancer une exception comme quoi le parametre n'est pas valide, ou autre chose, mais tu dois etre exhaustif dans ce cas-ci sinon ta signature de methode n'est pas respectee.

Reply

Marsh Posté le 11-05-2004 à 07:38:42    

en clair ? jmets un  
case default :
   break;  
?
c'est ca ou alors jme plante totalement ?


---------------
-3dB
Reply

Marsh Posté le 11-05-2004 à 08:54:54    

non ca change rien ici.
 
le probleme c'est pas qu'il faille un default dans ta clause switch, le probleme c'est que tu declres ta fonction comme renvoyant un int, et si l'int passe au travers de ton filtrage, ben ta methode renvoie rien, donc le compilateur il est pas content, ce qui est normal.
en consequence, il faut renvoyer un int (apres ton switch ou dans une clause default a l'interieur du switch) ou alors tu lances une exception comme quoi le parametre est pas valide (par exemple)

Reply

Marsh Posté le 11-05-2004 à 09:06:37    

essaie de mettre  
 

Code :
  1. Switch(dir)


 
switch en minuscule !

Reply

Marsh Posté le 11-05-2004 à 10:18:45    

Petit conseil de codage : toutes les clauses de ton switch renvoient la même variable :

  • affecte une valeur par défaut à nb_cases dans la clause default du switch
  • fait un return global de nb_cases en fin de méthode.


ça t'évitera bien des problèmes en cas d'erreur.
 
De manière générale, il est bon de n'avoir qu'un point de retour d'une méthode.

Reply

Marsh Posté le 11-05-2004 à 12:16:20    

mbl a écrit :

en clair ? jmets un  
case default :
   break;  
?
c'est ca ou alors jme plante totalement ?

hors sujet, mais c'est  

Code :
  1. switch(prout) {
  2. case BIDULE :
  3. default :
  4. }


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 11-05-2004 à 12:29:37    

nraynaud a écrit :

hors sujet, mais c'est  

Code :
  1. switch(prout) {
  2. case BIDULE :
  3. default :
  4. }



sans oublier le break apres chaque case quand meme [:aloy]

Reply

Marsh Posté le 11-05-2004 à 12:39:00    

the real moins moins a écrit :

sans oublier le break apres chaque case quand meme [:aloy]

me parle pas de cette merde, j'en ai oublié un l'autre fois.
 
maintenant, j'ai plutôt tendance à utiliser une hashMap qu'un switch tellement c'est la merde syntaxiquement et au debug. En plus ça fait des fonctions de 300 lignes.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 11-05-2004 à 12:40:46    

bah clair :o
(sinon moi je fous meme un block apres chaque case, je pige pas pq c'est pas la syntaxe par defaut. ça me permet d'isoler mes variables
 
sinon


switch(truc) {
 case 1:
   String s = "pouet";
   dostuffwith(s);
   break;
 case 2:
   String s = "blah";
   dostuffwith(s);
   break;
 
}

n'est pas valide parce que "s" est défini deux fois [:kiki]

Reply

Marsh Posté le 11-05-2004 à 12:40:46   

Reply

Marsh Posté le 11-05-2004 à 12:42:17    

switch, cai le mal, comme dirait l'autre.

Reply

Marsh Posté le 11-05-2004 à 12:44:30    

gfive a écrit :

switch, cai le mal, comme dirait l'autre.

oué, mais j'ai tendance à le garder pour les petits automates. ça fait des trucs indébuggables, mais assez compact.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 11-05-2004 à 12:46:54    

Oui, ça se comprend...Y'a toujours des entorses à la philosophie objet qu'on peut considérer comme admissibles, et c'est bien normal, sinon, on se ferait souvent chier pour pas grand chose...

Reply

Marsh Posté le 11-05-2004 à 12:50:10    

En fait, j'aimerais avoir un générateur d'automates en ligne, comme il y a un générateur d'expressions rationelles, mais ça existe pas.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 11-05-2004 à 12:51:52    

the real moins moins a écrit :

je pige pas pq c'est pas la syntaxe par defaut.


parce que ca vient du C, et que en C, à la compilation, ca se traduit quasi directement en assembleur et que dans le cas où tu mets pas de break ca évite un saut inutile.  [:benou]


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed