Java 三元参数传递

Java 三元参数传递,java,ternary-operator,operation,ternary,Java,Ternary Operator,Operation,Ternary,在Java中,是否可以使用三元函数将多个参数传递到方法调用中 例如,在方法中,有: print(degree == 270 ? "e", 5 : "t", 6); 这要求: public void print(String s, int t){ } 通过使用三元数,我想传入e和5或t和6。无需重复代码,如: print(degree == 270 ? "e" : "t", degree == 270? 5 : 6); 我想有些人不明白,我不想使用上面的方法

在Java中,是否可以使用三元函数将多个参数传递到方法调用中

例如,在方法中,有:

    print(degree == 270 ? "e", 5 : "t", 6);
这要求:

    public void print(String s, int t){

    }
通过使用三元数,我想传入e和5或t和6。无需重复代码,如:

    print(degree == 270 ? "e" : "t", degree == 270? 5 : 6);
我想有些人不明白,我不想使用上面的方法,它会在不必要的时间运行检查。

条件表达式(这是官方名称)是一个与任何其他Java表达式一样的表达式。就周围的方法调用而言,只有它的结果才重要。显然,不能使用一个表达式指定两个参数,因为每个参数都是自己的表达式。

为什么不呢

    (degree == 270) ? print("e", 5) : print("t", 6);

EDIT:显然在java中不起作用:///p>如果表达式包含一个包装器对象,该对象将两个值(s和t)都作为变量,那么这是可能的,但是您必须同时实例化这两个值。为了使您的代码更好,我会尝试以下方法:

if(degree == 270) {
    print("e", 5);
}
else {
    print("f", 6);
}

只要与绝对值(而不是范围)进行比较

我知道这不是您想要的,但通常情况下,在企业环境中,这是一种推荐的符号,因为对于其他人来说,这是最容易理解的符号,它将保留代码,并在一些新手程序员必须更改某些内容时降低出错的风险

最后,无论哪种方式,编译后的代码都是有效的。事实上,我认为你的第二个选项将经历两次条件表达式,在这种情况下,最好只使用我写的一个选项


这并不是问题的真正答案。他问是否可以根据条件返回多个结果。哦,现在我明白了。谢谢。我想
学位==270?打印(“e”,5):打印(“t”,6)是最容易阅读的。@Tom不在语句上下文中工作,这是OP的情况。@Tom仅当print方法的返回类型不是void@SubhrajyotiMajumder即使是这样,当用作表达式语句时,这显然是本文的意图。我很确定,按照OP的意愿是不可能的,这就是为什么我提供了我认为最好的解决方案?我很确定它至少在c++中是这样的,它很容易检查。。。对于您和OP的版本一样:)upps,thx Tom@马克:如果你仔细看的话,我的和OP的有细微的区别;)。但是好的,如果java不允许这样做。。见鬼,我是说OP检查他的版本和你检查你的版本一样容易。不过,你们两个都会找到相同的答案。是的,这本可以很好地工作,但正如所说的,没有编译..:(我在工业界工作,有人告诉我Ternary更容易维护和查看。我知道包装它会起作用,但那是不必要的。无论如何,谢谢。Ternaries很棒,我同意。
返回测试?“a”:“b”
如果(测试)返回“a”或返回“b”给读者带来的精神负担要少
因为在前一种情况下,我们事先就知道我们是无条件返回的,只剩下决定什么,如果
如果
,我们必须仔细检查这两个条款以确保。好吧,每个企业的人都会有不同的意见。然而,较长的代码确实很容易查看。是什么原因使它如此sky是如果你不在一行if语句上使用大括号,程序员通常会添加一行,然后忘记没有大括号…最后,我认为这是一个有编码标准的问题…@Marko我同意,特别是在你陈述的情况下,因为你在一个方法中避免了多个返回语句,而这个方法也常常被认为是一个糟糕的prac正如我所说,这通常取决于企业的政策。。。
switch(degree) {
    case 270:
        print("e", 5);
        break;
    default:
        print("f", 6);
        break;
}