Formulaire abrégé pour L'instruction Java if

Je sais qu'il existe un moyen d'écrire une instruction Java if sous forme abrégée.

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

Est-ce que quelqu'un sait comment écrire le formulaire abrégé pour les 5 lignes ci-dessus en une seule ligne?

131
demandé sur LAD 2012-01-17 20:58:03

15 réponses

Utilisez l'opérateur ternaire:

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

Je pense que vous avez les conditions en arrière - si c'est nul, vous voulez que la valeur soit "N / A".

Et si city est null? Votre code * frappe le lit dans ce cas. J'ajouterais un autre chèque:

name = ((city == null) || (city.getName() == null) ? "N/A" : city.getName());
293
répondu duffymo 2017-08-08 20:27:09

La façon de le faire est avec l'opérateur ternaire:

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

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

if (city.getName() != null) ...
21
répondu Sam Goldberg 2012-01-17 17:01:08

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

name = city.getName();
if (name == null) name = "N/A";
19
répondu Peter Lawrey 2012-01-17 17:04:33

Le? : opérateur en Java

En Java, vous pouvez é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 cela, 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)? a: 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 renvoyée. Si elle est fausse, la deuxième valeur, b, est renvoyé. Quelle que soit la valeur renvoyée dépend du test conditionnel, a > B. La condition peut être n'importe quelle expression qui renvoie une valeur booléenne.

12
répondu Reza Baradaran Gazorisangi 2015-11-15 23:28:31

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

myVariable = (testCondition) ? someValue : anotherValue;

  • () contient le if
  • ? signifie then
  • : signifie else

C'est la même chose que

if (testCondition) {
    myVariable = someValue;
} else {
    myVariable = anotherValue;
}
10
répondu Suragch 2017-06-23 09:49:23

Dans java 8:

name = Optional.ofNullable(city.getName()).orElse("N/A")
8
répondu digitebs 2017-06-29 03:18:45
name = (city.getName() != null) ? city.getName() : "N/A";
6
répondu shift66 2017-12-01 16:46:17

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

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

C'est la forme courte de:

Boolean isCapital = city.isCapital();
String isCapitalName;
if(isCapital == null) {
    isCapitalName = "";
} else if(isCapital) {
    isCapitalName = "Capital";
} else {
    isCapitalName = "City";
}
5
répondu OctopusSD 2017-01-12 20:08:52
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 affecté à name ou simplement {[3] } ou bien la valeur de city.getName() est affectée à name, c'est-à-dire name=city.getName().

Choses à regarder ici:

  1. condition est dans la parenthèse suivie par 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 du côlon (:) et valeur à droite du côlon (a) la valeur à gauche des deux-points est attribuée lorsque condition est true, sinon la valeur à droite de deux-points est affectée à la variable.

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

3
répondu Arafe Zawad Sajid 2016-11-05 19:21:42

Utiliser org.Apache.commun.lang3.StringUtils:

name = StringUtils.defaultString(city.getName(), "N/A");
2
répondu Paul Rambags 2017-08-03 15:51:43

Simple et clair:

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

Version Longue:

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

, Ou comment je l'utilise pour être clair pour les autres lecteurs de code:

 String manType = "poor";
    if (hasMoney())
        manType = "rich";
2
répondu Vasile Doe 2017-11-06 15:41:03

Vous pouvez utiliser l'opérateur ternaire en java.

Syntaxe:

Condition ? Block 1 : Block 2

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

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

Pour plus d'informations vous pouvez vous référer ce ressource.

1
répondu Shiva 2018-05-14 11:55:36

, Vous pouvez supprimer crochets et 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();

Attribuez le résultat de la condition pour booléen

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

EXTRA: pour les curieux

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

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

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

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

Ainsi, l'Opérateur ?: attribue la valeur renvoyée par la condition. Dans ce cas, la valeur de city.getName(), si ce n'est pas null.

1
répondu IgniteCoders 2018-06-21 11:48:03

Voici un code de ligne

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

Voici un exemple de fonctionnement, exécutez le code ci-dessous dans le fichier js et comprenez le résultat. Ceci {[2] } est une condition comme nous le faisons dans if() normal et "Data" est une déclaration lorsque cette condition est devenue vraie. ceci " : " agit comme else et "N/A" est une instruction pour la condition else. Espérons que cela vous aide à comprendre la logique.

name = ("Data" != null) ? "Data" : "N/A";

console.log(name);
1
répondu Waqas Qayum 2018-07-24 00:35:24
name = city.getName()!=null?city.getName():"N/A"
-3
répondu Shadow 2017-08-08 22:48:06