Java Commutateur Incompatible Types Boolean Int
J'ai la classe suivante:
public class NewGameContract {
public boolean HomeNewGame = false;
public boolean AwayNewGame = false;
public boolean GameContract(){
if (HomeNewGame && AwayNewGame){
return true;
} else {
return false;
}
}
}
Quand j'essaie de l'utiliser comme ceci:
if (networkConnection){
connect4GameModel.newGameContract.HomeNewGame = true;
boolean status = connect4GameModel.newGameContract.GameContract();
switch (status){
case true:
break;
case false:
break;
}
return;
}
J'obtiens l'erreur:
incompatible types found: boolean required: int on the following
`switch (status)` code.
Ce que je fais mal?
- Juste une note de côté, votre
GameContract
méthode pourrait simplement êtrereturn HomeNewGame && AwayNewGame
. - merci pour toutes ces infos. im essayant d'apprendre le C# et Java, et c'est quelque chose qu'ils traitent différemment.
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas basculer sur un
boolean
(qui ont seulement 2 valeurs de toute façon):Le Langage Java Spécification précise clairement ce type d'expression peut être
switch
-ed sur.JLS 14.11 L'instruction switch
Il est beaucoup plus concis et lisibles pour tout simplement utiliser un
if
déclaration de distinguer les deux cas deboolean
.vous ne voulez pas
switch
sur un booléen, il suffit d'utiliser un simpleif
/else
edit :
switch
est utilisé uniquement pourint
s,char
s, ouenum
s (je pense que c'est tout, il existe peut-être d'autres?)edit edit : il semble
short
etbyte
sont également des types valides pour la commutation, ainsi que les versions boîtes de toutes ces (Integer
,Short
, etc etc)Instructions de commutation en Java peuvent utiliser byte, short, char et int (note: pas de long), les types de données primitifs ou leurs correspondants types wrapper. Départ avec J2SE 5.0, il est devenu possible d'utiliser les types d'énumérations. Départ avec Java SE 7, il est devenu possible d'utiliser des Chaînes.
Ne pouvez pas utiliser les booléens en option, seuls int. Veuillez lire le Java docs pour l'instruction switch.
Commutateur prend une valeur entière, et un booléen ne peut pas être converti en nombre entier.
En java, un booléen est un type dans son propre droit, et non implicitement convertible en un autre type (à l'exception du type Booléen).
En Java, l'interrupteur ne fonctionne que pour les byte, short, char, int et enum. Pour les booléens, vous devriez utiliser si/d'autre, il y a un nombre très limité d'états.