/ / Instruction switch contenant des expressions booléennes dans les étiquettes de casse [duplicate] - java, switch-statement

Instruction Switch avec des expressions booléennes dans les étiquettes de cas [duplicate] - java, switch-statement

J'apprends à java et j'ai des problèmes avec la déclaration switch-case avec expression. Quelqu'un peut m'aider s'il vous plaît? Je ne suis pas capable de comprendre où je fais l'erreur.

package SecondSet_StartingArray;

import java.util.Scanner;

public class Testing
{
public static void main(String[] args) {

System.out.println("Enter a Number between 1 & 100");
Scanner scan = new Scanner(System.in);
int i = scan.nextInt();
switch (i)
{
case (i>90):    System.out.println("Rating 5");break;
case (i<=90):   System.out.println("Rating 4");break;
case (i<=60):   System.out.println("Rating 3");break;
case(i<=30):    System.out.println("Rating 2");break;
case(i>29):     System.out.println("Rating 1");break;
}
}

}

Réponses:

5 pour la réponse № 1

Vous ne pouvez pas utiliser "switch-case" avec des expressions booléennes comme case (i<=90). Vos observations doivent être des expressions constantes pour être évaluées.

case 90: whatever; break;
case 120: whatever; break;
case SOME_CONSTANT: whatever; break;

Pour vos besoins, vous devez utiliser des instructions if-else-if.


2 pour la réponse № 2

Ce que vous essayez de réaliser est un if-else-statement. Switch-Statements sont utilisés lorsque vous essayez d'évaluer des valeurs constantes.


1 pour la réponse № 3

Comme vous pouvez le lire dans la spécification du langage Java ici:

Tous les éléments suivants doivent être vrais, sinon une erreur de compilation se produit:

  1. Chaque expression constante de casse associée à une instruction switch doit pouvoir être affectée (§ 5.2) au type de l'expression switch.
  2. Deux expressions de constante de cas associées à une instruction switch ne peuvent avoir la même valeur.
  3. Aucune étiquette de commutateur n'est nulle.
  4. Au plus une étiquette par défaut peut être associée à la même instruction switch.

Dans votre code, le premier point n'est pas satisfait. Vous voudrez peut-être utiliser if-else-if déclaration au lieu de switch ici pour effectuer une vérification appropriée de la valeur stockée dans i.