0
votes

Condition Intellij toujours faux lors de l'avertissement

J'ai le code ci-dessous,

J'ai un énum et une variable de BigInteger. Veuillez trouver la condition If utilisée xxx

comment fixer l'avertissement?


4 commentaires

"Comment réparer l'avertissement?" Supprimer que si la déclaration.


EnumCode! = Enumcode.Closed est true si Enumcode == null . 2e si l'état inclut le 3ème si condition


@jhamon: merci. On dirait que j'ai fait une erreur très stupide


Lorsque vous atteignez la 3ème condition, le montant ne sera pas égal à null si null! = Le montant résulterait de faux. Deuxièmement, null == Enumcode entraînera également une fausse car vous l'avez déjà vérifiée dans la deuxième déclaration. Dans votre seconde si la déclaration, lorsque vous dites, NULL! = ENUMCODE.CLOSED; Les valeurs [valeurs possibles pour que la condition soient vraies incluent {null, ouverte, aucun}. Cela signifie que vous n'avez pas besoin de vérifier plus NULL == Enumcode car ce sera faux. Selon l'algèbre booléenne, false && false est faux. Vous supprimez simplement le troisième si, car ils sont inclus dans votre précédent si.


3 Réponses :


1
votes
if ((enumCode == EnumCode.Closed) == (null == amount)) {
  return false;
}

0 commentaires

1
votes

Si Enumcode code> est null code>, la condition énumcode! = Enumcode.closed code> est vrai. Donc, le 2e si code> condition inclut le 3ème.

Vous devez vérifier s'il est différent de Enumcode.closed code> et s'il n'est pas null. P>

if (enumCode == EnumCode.Closed && null == amount) {
    return false;
}

if (enumCode != null && enumCode != EnumCode.Closed && null != amount) {
    return false;
}

if (null == enumCode && null != amount) {
    return false;
}


0 commentaires

0
votes

expliqué logiquement, une fois que vous avez atteint la 3ème condition, la quantité variable ne sera pas égale à null, donc null! = montant em> résulterait faux em>. Deuxièmement, null == Enumcode em> résultera également de faux em> parce que vous l'avez déjà vérifié dans la deuxième si la déclaration em>. De plus, dans votre seconde si la déclaration em>, lorsque vous dites, null! = Enumcode.Closed; em> les valeurs possibles pour que la condition soit vraie inclut {null, ouverte, aucun} em>. Cela signifie que vous n'avez pas besoin de vérifier à nouveau avec null == Enumcode em> car il sera faux de toute façon. Selon l'algèbre booléenne, faux && faux est faux em>. Pour résoudre le problème, vous supprimez simplement le troisième si, car ils sont inclus dans votre précédent si.

public enum EnumCode {
        Open,
        Closed,
        None
    }

private boolean TEST(final ConstraintValidatorContext constraintValidatorContext, final BigInteger amount, final EnumCode enumCode) {
    if (enumCode == EnumCode.Closed && null == amount) {
        //error message1
        return false;
    }

    if (enumCode != EnumCode.Closed && null != amount) {
        //error message2
        return false;
    }
    return true;
}


0 commentaires