2013-04-09 51 views
0

在JavaScript中,我可以定義:使用||運營商的替代分配

num = numerator || 0; 
denom = denominator || 1; 

然而,在Java中,這不能適用。

沒有使用條件(明確寫入),是否有一個簡潔的方式來實現這個「如果未定義,分配給這個」?

+1

如果變量未定義,java編譯器會給你一個錯誤 – 2013-04-09 02:35:24

+2

在Java中沒有「未定義」的東西......如果你想如果傳遞了'null'則分配一個默認值,那麼你可以使用三元運算符。 – nhahtdh 2013-04-09 02:36:02

+2

JavaScript與Java無關。這兩種是完全不同的語言。 – deceze 2013-04-09 02:36:26

回答

9

也許這就夠了。

num = numerator != null ? numerator : 0; 
denom = denominator != null ? denominator : 1; 
0

您可以使用三元運算符/條件(?:)

String ans = (question == null)? null : "Option A"; 

在上面的例子中,我們設置ANS以選項A,如果問題不爲空,否則ANS設置爲null。

0

我知道你指定了「無條件」,但是三元「if」呢?

num = (num != 0) ? numerator : 0; 
+0

This例子沒有意義。請參考[Nicolas'answer](http://stackoverflow.com/a/15892354/1065197)。 – 2013-04-09 02:37:44

1

您可以使用多個構造函數,並設置爲默認值...如果u使用它作爲一個對象...

zero = new Rational(); 
five = new Rational(5); 
twoThird = new new Rational(2,3); 

class Rational{ 
    num = 0; 
    denom = 1; 

    public Rational(){ 
    } 
    public Rational(int num){ 
     this.num=num; 
    } 
    public Rational(int num , int denom){ 
     this.num=num; 
     this.denom=denom; 
    } 
} 

與三元的其他解決方案如何以往任何時候都需要有包裝對象,並處理空指針,這是一般沒有良好的Java風格

+0

這並不簡潔,但我不認爲Java對於簡潔明確的高價值程序員來說是一種正確的語言。 – 2013-04-09 03:23:38

+0

:D Perl ftw!但是Java使它很容易生成幾十行代碼,但是Java引導你使用一些易於測試,重用和擴展的風格 – JAMM 2013-04-09 03:41:57