Formulaire abrégé pour l’instruction Java If

Je sais qu’il existe un moyen d’écrire java if statement sous forme abrégée

if (city.getName() != null) { name = city.getName(); } else { name="N/A"; } 

Est-ce que quelqu’un sait comment écrire une forme courte pour plus de 5 lignes en une seule ligne …

    Utilisez l’opérateur ternaire:

     name = ((city.getName() == null) ? "N/A" : city.getName()); 

    Je pense que vous avez les conditions à l’envers – si elle est nulle, vous voulez que la valeur soit “N / A”.

    Et si la ville est nulle? Votre code * frappe le lit dans ce cas. J’appendais un autre chèque:

     name = ((city == null) || (city.getName() == null) ? "N/A" : city.getName()); 

    La manière de faire est avec l’opérateur ternaire:

     name = city.getName() == null ? city.getName() : "N/A" 

    Cependant, je pense que vous avez une faute de frappe dans votre code ci-dessus, et vous voulez dire:

     if (city.getName() != null) ... 

    Pour éviter d’appeler .getName() deux fois, j’utiliserais

     name = city.getName(); if (name == null) name = "N/A"; 

    Le ? : opérateur en Java

    En Java, vous pourriez écrire:

     if (a > b) { max = a; } else { max = b; } 

    Définir une seule variable à l’un des deux états en fonction d’une seule condition est une utilisation si courante de if-else qu’un raccourci a été conçu pour lui, l’opérateur conditionnel,?:. En utilisant l’opérateur conditionnel, vous pouvez réécrire l’exemple ci-dessus en une seule ligne comme ceci:

     max = (a > b) ? a : b; 

    (a> b)? un B; est une expression qui renvoie l’une des deux valeurs a ou b. La condition (a> b) est testée. Si c’est vrai, la première valeur, a, est retournée. Si elle est fausse, la deuxième valeur, b, est renvoyée. Quelle que soit la valeur renvoyée dépend du test conditionnel, a> b. La condition peut être toute expression qui renvoie une valeur booléenne.

    J’oublie toujours comment utiliser l’ opérateur ?: Ternary . Cette réponse supplémentaire est un rappel rapide. C’est un raccourci pour if-then-else .

     myVariable = (testCondition) ? someValue : anotherValue; 

    • () détient le if
    • ? signifie then
    • : signifie else

    C’est la même chose que

     if (testCondition) { myVariable = someValue; } else { myVariable = anotherValue; } 

    en java 8:

     name = Optional.ofNullable(city.getName()).orElse("N/A") 
     name = (city.getName() != null) ? city.getName() : "N/A"; 

    Vous pouvez écrire des instructions if, else if, else sous forme abrégée. Par exemple:

     Boolean isCapital = city.isCapital(); //Object Boolean (not boolean) Ssortingng isCapitalName = isCapital == null ? "" : isCapital ? "Capital" : "City"; 

    Ceci est une forme courte de:

     Boolean isCapital = city.isCapital(); Ssortingng isCapitalName; if(isCapital == null) { isCapitalName = ""; } else if(isCapital) { isCapitalName = "Capital"; } else { isCapitalName = "City"; } 
     name = ( (city.getName() == null)? "N/A" : city.getName() ); 

    tout d’abord la condition (city.getName() == null) est cochée. Si oui, alors "N/A" est assigné à name ou simplement name="N/A" ou bien la valeur de city.getName() est affectée à name, c’est-à-dire name=city.getName() .

    Choses à regarder ici:

    1. la condition est dans la parenthèse suivie d’un point d’interrogation. C’est pourquoi j’écris (city.getName() == null)? . Ici, le point d’interrogation est juste après la condition. Facile à voir / lire / deviner même!
    2. valeur à gauche de deux points (:) et valeur à droite de deux points (a) La valeur à gauche de deux-points est affectée lorsque la condition est vraie, sinon la valeur de deux-points est assignée à la variable.

    voici une référence: http://www.cafeaulait.org/course/week2/43.html

    Utilisez org.apache.commons.lang3.SsortingngUtils:

     name = SsortingngUtils.defaultSsortingng(city.getName(), "N/A"); 

    Simple et clair:

     Ssortingng manType = hasMoney() ? "rich" : "poor"; 

    version longue:

      Ssortingng manType; if (hasMoney()) { manType = "rich"; } else { manType = "poor"; } 

    ou comment je l’utilise pour être clair pour les autres lecteurs de code:

      Ssortingng manType = "poor"; if (hasMoney()) manType = "rich"; 

    Vous pouvez utiliser un opérateur ternaire en Java.

    Syntaxe:

     Condition ? Block 1 : Block 2 

    Donc, dans votre code, vous pouvez faire comme ça,

     name = ((city.getName() == null) ? "N/A" : city.getName()); 

    Pour plus d’informations, vous pouvez vous référer à cette ressource.

    Vous pouvez supprimer les crochets et les sauts de ligne .

     if (city.getName() != null) name = city.getName(); else name = "N/A"; 

    Vous pouvez utiliser ?: Opérateurs en Java.

    Syntaxe:

     Variable = Condition ? BlockTrue : BlockElse; 

    Donc, dans votre code, vous pouvez faire comme ceci:

     name = city.getName() == null ? "N/A" : city.getName(); 

    Atsortingbuer un résultat de condition pour booléen

     boolean hasName = city.getName() != null; 

    EXTRA: pour curieux

    Dans certaines langues basées sur JAVA comme Groovy , vous pouvez utiliser cette syntaxe:

     name = city.getName() ?: "N/A"; 

    Vous pouvez le faire dans Groovy car si vous demandez cette condition:

     if (city.getName()) { //returns true if city.getName() != null } else { //returns false if city.getName() == null } 

    Donc, l’opérateur ?: Atsortingbue la valeur renvoyée par la condition. Dans ce cas, la valeur de city.getName() si elle n’est pas null .

    voici un code de ligne

     name = (city.getName() != null) ? city.getName() : "N/A"; 

    Voici un exemple de son fonctionnement, exécutez ci-dessous le code dans le fichier js et comprenez le résultat. Ceci ("Data" != null) est une condition comme nous le faisons dans normal if() et "Data" est une déclaration lorsque cette condition est devenue vraie. ce " : " agit comme autre et "N/A" est une condition pour else. J’espère que cela vous aidera à comprendre la logique.

     name = ("Data" != null) ? "Data" : "N/A"; console.log(name); 
     name = city.getName()!=null?city.getName():"N/A"