web-dev-qa-db-ja.com

Java ifステートメントの短縮形

Javaのifステートメントを短い形式で書く方法があることを私は知っています。

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

上の5行の短縮形を1行に書く方法を知っている人はいますか?

151
Makky

三項演算子を使用します。

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

逆の条件があると思います - nullの場合は、値を "N/A"にします.

市がnullの場合はどうなりますか?その場合、あなたのコード*がベッドに衝突します。もう1つ小切手を追加します。

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

その方法は三項演算子を使うことです。

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

しかし、私はあなたが上記のあなたのコードにタイプミスがあると信じています、そしてあなたは言うことを意味します:

if (city.getName() != null) ...
23
Sam Goldberg

.getName()を2回呼び出さないようにするために、

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

は? :Javaの演算子

Javaでは、次のように書くかもしれません。

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

単一の条件に基づいて単一の変数を2つの状態のうちの1つに設定することは、if-elseの一般的な使い方であり、ショートカットが考案されている、条件付き演算子、?:。条件演算子を使用すると、上記の例を次のように1行に書き換えることができます。

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

(a> b) a:b; aまたはbの2つの値のうちの1つを返す式です。条件(a> b)がテストされます。 trueの場合、最初の値aが返されます。偽の場合は、2番目の値bが返されます。どちらの値が返されても、条件付きテストに依存します(a> b)。条件はブール値を返す任意の式にすることができます。

私はいつも?:三項演算子 の使い方を忘れています。この補足的な答えはちょっとしたメモです。 if-then-elseの省略形です。

myVariable = (testCondition) ? someValue : anotherValue;

どこで

  • ()ifを保持します
  • ?thenを意味します
  • :elseを意味します

それはと同じです

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

java 8では:

name = Optional.ofNullable(city.getName()).orElse("N/A")
14
digitebs

if, else if, elseステートメントは短い形式で書くことができます。例えば:

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

これは以下の短縮形です。

Boolean isCapital = city.isCapital();
String isCapitalName;
if(isCapital == null) {
    isCapitalName = "";
} else if(isCapital) {
    isCapitalName = "Capital";
} else {
    isCapitalName = "City";
}
8
OctopusSD
name = (city.getName() != null) ? city.getName() : "N/A";
6
shift66
name = ( (city.getName() == null)? "N/A" : city.getName() );

最初に条件(city.getName() == null)がチェックされます。もしそうであれば、"N/A"がnameに割り当てられるか、単にname="N/A"が割り当てられるか、そうでなければcity.getName()からの値がname、すなわちname=city.getName()に割り当てられる。

ここで見ておくべきこと:

  1. 条件は括弧の中に疑問符が続きます。だから私は(city.getName() == null)?を書きます。ここで疑問符は条件の直後にあります。見やすい/読む/でも推測できる!
  2. コロンの左側の値(:)とコロンの右側の値(a)コロンの左側の値は、条件が真の場合に割り当てられ、それ以外の場合はコロンの右側の値が変数に割り当てられます。

これが参照です: http://www.cafeaulait.org/course/week2/43.html

3

これが1行のコードです

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

これがどのように動作するかの例です、jsファイルのコードの下で実行し、結果を理解します。この("Data" != null)は通常のif()と同じように条件であり、"Data"はこの条件が真になったときのステートメントです。この" : "はelseとして機能し、"N/A"はelse条件のステートメントです。これがあなたが論理を理解するのに役立つことを願っています。

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

console.log(name);
3
Waqas Qayum

Org.Apache.commons.lang3.StringUtilsを使用してください。

name = StringUtils.defaultString(city.getName(), "N/A");
2
Paul Rambags

単純明快:

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

ロングバージョン:

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

または他のコードリーダーにとって明確にするためにどのように使用していますか。

 String manType = "poor";
    if (hasMoney())
        manType = "rich";
2
Vasile Doe

角カッコ改行は削除できます。

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

Javaでは?:演算子を使用できます。

構文:

Variable = Condition ? BlockTrue : BlockElse;

だからあなたのコードではあなたはこのようにすることができます:

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

Booleanの条件結果を代入する

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

EXTRA: 好奇心旺盛の場合

JavaのようなGroovyに基づくいくつかの言語では、この構文を使うことができます。

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

これをGroovyで行うことができます。あなたがこの条件を要求するのであれば、

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

そのため、演算子?:は、条件から返された値を代入します。この場合、city.getName()の値はnullではない場合。

1
IgniteCoders

Javaでは三項演算子を使用できます。

構文:

Condition ? Block 1 : Block 2

だからあなたのコードではあなたはこのようにすることができます、

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

詳細については this リソースを参照できます。

0
Shiva