Comment utiliser supérieur ou égal à une instruction de commutateur
Quelle est la meilleure façon de vérifier si la variable est plus grand que certaines nombre à l'aide de l'instruction switch? Ou vous recommandons d'utiliser if-else? J'ai trouvé un exemple:
int i;
if(var1>var2) i = 1;
if(var1=var2 i = 0;
if(var1<var2) i = -1;
switch (i);
{
case -1:
do stuff;
break;
case 0:
do stuff;
break;
case 1:
do stuff;
break;
}
Que pouvez-vous dire à un novice sur l'utilisation de "supérieur ou égal" dans les instructions switch?
source d'informationauteur Vlad Holubiev
Vous devez vous connecter pour publier un commentaire.
Ne sais pas si c'est ce que vous demandez, mais vous pouvez le faire de cette façon:
Je vous recommande fortement d'un
if(var1>var2){}else if (var1==var2) {} else {}
construire. À l'aide d'un commutateur de se cacher de l'intention. Et si unbreak
est supprimé par erreur?Commutateur est utile et clair pour les valeurs énumérées, pas pour les comparaisons.
D'abord une suggestion:
switch
comme les états devraient seulement être utilisés pour la commutation et pas pour la condition de la vérification.De JLS instructions de commutation
Expressions convertibles en un int ou Enum sont pris en charge dans l'expression.
Seulement des expressions constantes et Enum constantes sont autorisés dans les instructions de commutation de 1,6 ou moins avec java 7 valeurs de Chaîne sont également pris en charge. Aucune des expressions logiques sont pris en charge.
Sinon, vous pouvez faire en tant que donnée par @Stewart dans sa réponse.
Java uniquement prise en charge directe des valeurs, pas des plages dans
case
états, donc, si vous devez utiliser un commutateur, cartographie des options d'abord, puis en passant sur que, comme dans l'exemple que vous fournissez est votre seul choix. Cependant, cela est tout à fait excessive - utilisez des instructions if.Une instruction switch est pour exécuter du code lorsque certaines valeurs sont retournées, le si alors sinon vous permet de sélectionner une plage de valeurs en une seule instruction. Je recommanderais de faire quelque chose comme ce qui suit (même si personnellement je préfère le Entier.signum méthode) si vous voulez regarder plusieurs gammes:
Vous êtes mieux avec de la
if
états; laswitch
approche est beaucoup moins clair, et dans ce cas, votreswitch
approche est objectivement faux. Le contrat pourComparable#compareTo
ne nécessite pas de retour-1
ou1
c'est juste que la valeur de retour de laint
être positive ou négative. Il est tout à fait légitime pourcompareTo
de retour-42
et votreswitch
instruction de déposer le résultat.Si un valeur de la variable est utilisée, l'utilisation de l'interrupteur. Si plusieurs variables sont en jeu, utiliser si. Dans votre problème, il devrait être si.
Malheureusement vous ne pouvez pas le faire en java. Il est possible de faire dans
CoffeeScript
ou d'autres langues.Je vous recommande d'utiliser un
if
-else
-déclaration par le déplacement de vos "faire des trucs" dans des méthodes supplémentaires. De cette façon, vous pouvez garder votre si-sinon clairement dans un code lisible.