2013-04-09 52 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