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 № 1Vous 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:
- Chaque expression constante de casse associée à une instruction switch doit pouvoir être affectée (§ 5.2) au type de l'expression switch.
- Deux expressions de constante de cas associées à une instruction switch ne peuvent avoir la même valeur.
- Aucune étiquette de commutateur n'est nulle.
- 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
.