Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我需要一个Java中的三元运算符,如果条件为true,它将分配两个变量_Java_Ternary - Fatal编程技术网

我需要一个Java中的三元运算符,如果条件为true,它将分配两个变量

我需要一个Java中的三元运算符,如果条件为true,它将分配两个变量,java,ternary,Java,Ternary,我已经看到可以使用多个三元条件,但是如果一个条件为真,还没有找到分配两个变量的方法。这就是我试图写的方法: int[] chkNext(int mnd, int y) { int[] date = new int[2]; mnd = 12 ? mnd = 1, y++ : mnd++; // returns the following: "error: : expected" date[0] = mnd, date[1] = y;

我已经看到可以使用多个三元条件,但是如果一个条件为真,还没有找到分配两个变量的方法。这就是我试图写的方法:

    int[] chkNext(int mnd, int y) {  
        int[] date = new int[2];  
        mnd = 12 ? mnd = 1, y++ : mnd++; // returns the following: "error: : expected"
        date[0] = mnd, date[1] = y;  
        return date;  
    }  

只要使用
if
语句即可

if (mnd == 12) {
//      ^^  very important
  mnd = 1;
  y++;
} else {
  mnd++;
}
这是:

date[0] = mnd, date[1] = y;  
最好是:

date[0] = mnd; date[1] = y;  

如果你真的不需要逗号运算符,就不要使用它。

只要使用
if
语句即可

if (mnd == 12) {
//      ^^  very important
  mnd = 1;
  y++;
} else {
  mnd++;
}
这是:

date[0] = mnd, date[1] = y;  
最好是:

date[0] = mnd; date[1] = y;  

如果你真的不需要逗号运算符,就不要使用它。

三元运算符的构造是错误的,因为在“?”之前应该有条件。正如Mat所建议的,更好的选择是使用if语句

if (mnd == 12) {
//      ^^  very important
  mnd = 1;
  y++;
} else {
  mnd++;
}
三元通常可用于简单语句,如

boolean isEven = (n!=0 && n%2 == 0) ? true : false;

三元算子的构造是错误的,因为在“?”之前应该有条件。正如Mat所建议的,更好的选择是使用if语句

if (mnd == 12) {
//      ^^  very important
  mnd = 1;
  y++;
} else {
  mnd++;
}
三元通常可用于简单语句,如

boolean isEven = (n!=0 && n%2 == 0) ? true : false;

我想你不能-只要使用
if
。有一个名为避免内联条件的规则。理由:一些开发人员发现内联条件很难理解,所以他们公司的编码标准禁止内联条件。我并不总是同意这条规则,但无论如何我都在回避它们。添加逗号,甚至尝试返回多个值,都会在模糊的代码上下文中获得分数,但在实际编程中不会。简洁是件好事,但不能以牺牲可读性为代价。@stivlo:我在现实世界代码中发现的另一个坏例子是:x=(y!=null?(y.getF()!=null?BigDecimal.valueOf(y.getF()):null):null)我想避免像检查样式规则存在这样的暴行……我想你不能-只要使用
if
。有一个名为避免内联条件的规则。理由:一些开发人员发现内联条件很难理解,所以他们公司的编码标准禁止内联条件。我并不总是同意这条规则,但无论如何我都在回避它们。添加逗号,甚至尝试返回多个值,都会在模糊的代码上下文中获得分数,但在实际编程中不会。简洁是件好事,但不能以牺牲可读性为代价。@stivlo:我在现实世界代码中发现的另一个坏例子是:x=(y!=null?(y.getF()!=null?BigDecimal.valueOf(y.getF()):null):null)我想避免像Checkstyle规则存在这样的暴行…+1作为合理的建议。您不会因为代码变短而获得额外的积分。相反,更干净/更易读的代码总是受到欢迎。呃,迟到了。非常感谢您指出了一个明显但明智的选择,Java中没有逗号运算符。(尽管如此,如果您喜欢糟糕的代码,可以在一个声明中使用逗号声明多个变量。)+1表示合理的建议。您不会因为代码变短而获得额外的积分。相反,更干净/更易读的代码总是受到欢迎。呃,迟到了。非常感谢您指出了一个明显但明智的选择,Java中没有逗号运算符。(虽然,如果您喜欢糟糕的代码,可以使用逗号在一个声明中声明多个变量。)这是非常糟糕的做法,您根本不需要三元运算符来返回true或false!只需
booleaniseven=(n!=0&&n%2==0)就足够了。我在想一些例子,刚刚得到它。我接受布尔赋值,它是不需要的。(如果您选择
n%2==0
,为什么要检查
n!=0
?)这是非常糟糕的做法,您根本不需要三元运算符来返回true或false!只需
booleaniseven=(n!=0&&n%2==0)就足够了。我在想一些例子,刚刚得到它。我接受布尔赋值,它不是必需的。(如果您选择
n%2==0
,为什么要检查
n!=0
?)