2011-06-21 5 views
0
public String sizeOfSupermarket() { 
    String size; 
    switch (this.numberOfProducts) { 
     case (this.numberOfProducts > 5000): 
      size = "Large"; 
      break; 
     case (this.numberOfProducts > 2000 && this.numberOfProducts < 5000): 
      size = "Medium"; 
      break; 
     case (this.numberOfProducts < 2000): 
      size = "Small"; 
      break; 
    } 
    return size; 
} 

ce qui est erroné, comment écrire l'instruction de comparaison dans l'instruction case?java commutateur case question

+3

Je sens les devoirs. – f1sh

+2

vous avez besoin d'une instruction 'if'. Pas de commutateur –

+1

Que renverrez-vous si 'size' est 5000 ou 2000? –

Répondre

1

Vous pouvez utiliser une valeur dérivée, dans ce regard de cas au nombre de milliers.

public String sizeOfSupermarket() { 
    switch (this.numberOfProducts/1000) { 
     case 0: case 1: return "Small"; 
     case 2: case 3: case 4: return "Medium"; 
     default: return "Large"; 
    } 
} 

Remarque: vous avez un bug dans votre code tel que si les numberOfProducts est exactement 2000 ou 5000, il retournera null (en supposant qu'il a compilé)

0

Vous ne pouvez pas utiliser switch pour tester les expressions booléennes. Vous devez utiliser si. Vous pouvez utiliser l'interrupteur si vous voulez vérifier si une variable a une certaine valeur, i.e. .:

public String sizeOfSupermarket() { 
String size; 
switch (this.numberOfProducts) { 
    case 5000: 
     size = "Large"; 
     break; 
    case 2000: 
     size = "Medium"; 
     break; 
    case 100): 
     size = "Small"; 
     break; 
    } 
    return size; 
} 
1

Vous ne pouvez pas utiliser des expressions dans case déclarations. La condition est évaluée par l'instruction switch et les instructions case vérifient si le résultat correspond.

Pour faire ce que vous essayez de faire, vous devrez utiliser une série de if et else if déclarations:

if(this.numberOfProducts > 5000) { 
    size = "Large"; 
} 
else if(this.numberOfProducts > 2000 && this.numberOfProducts < 5000) { 
    size = "Medium"; 
} 
else { 
    size = "Small"; 
} 
+0

si je dois utiliser l'interrupteur? puis-je? – hkvega

+0

Pas si vous voulez utiliser une expression pour chaque cas. Comme indiqué par les 8 réponses que vous avez déjà, vous pouvez seulement utiliser les instructions if/else pour cela. Le point entier d'un 'switch' est que la condition est évaluée dans' switch', et que 'case's sont testés pour une correspondance. –

+0

vous ne gérez pas le cas où 'numberOfProducts == 5000' voir la réponse @ Gabriel, vous n'avez pas besoin de la vérification supplémentaire. –

0

Java 1.6 ne prend pas en charge une instruction switch conditionnelle, votre meilleur pari serait d'utiliser la structure de contrôle if then else

0

Aucun moyen. Par définition, switch/case est basé sur les types énumérés seulement (int, boolean, long, enum) dans tous les langages de type C que je connais.

Donc, vous devez utiliser si/structure d'autre ici:

public String sizeOfSupermarket() { 
    String size; 
     if (this.numberOfProducts > 5000) { 
      size = "Large"; 
     } else if (this.numberOfProducts > 2000 && this.numberOfProducts < 5000) { 
      size = "Medium"; 
     } else (this.numberOfProducts < 2000) { 
      size = "Small"; 
     } 
    return size; 
} 
1
if (numberOfProducts >= 5000) 
    size = "Large"; 
else if (numberOfProducts >= 2000) 
    size = "Medium"; 
else 
    size = "Small";