使用三元运算符的多个参数

时间:2014-07-20 06:27:34

标签: java string parameters

method(b ? "hello" : "hi", "whats", "going", "on");

当b == true时,我得到的是:“hello”,“whats”,“going”,“on”;

但我真正想要的是:

method(b ? "hello" : ((((("hi", "whats", "going", "on"))))));

提前谢谢。

3 个答案:

答案 0 :(得分:3)

trenary运算符必须为两个子句返回相同的类型(在您的情况下,“true”子句是String,并且不清楚什么是“false”子句 - 但您可能想要{{1 }})。

您可以通过始终返回String[]

来部分解决此问题
String[]

答案 1 :(得分:1)

我做的第一件事是盲目地在Eclipse中试一试,但很明显我无法得到任何接近你所要求的东西,所以我没有看到尝试/失败,而是看了看Java BNF grammar看看在没有赋值给变量的情况下声明集合的最短语法正确方法是什么。

假设您正在尝试避免声明额外的变量,但希望立即创建参数,我会使用以下内容,我认为这是获得所需内容的最短且最接近的语法正确方法:

import java.util.Arrays;

public class Main {

    public static void main(String[] args) {

         boolean b = false;

         methodSample(b ? new String[]{"Hello"} : new String[]{"hi", "whats", "going", "on"});

    }

    public static void methodSample(String[] args)
    {
        System.out.println(Arrays.toString(args));
    }

}

然而,更简洁的方法可能是:

public static void main(String[] args) {

    boolean b = false;

    String[] val1 = {"hello"};
    String[] val2 = {"hi", "whats", "going", "on"};

    methodSample(b ? val1 : val2);

}

答案 2 :(得分:0)

我希望你在寻找像这样的东西

// change this value
var a=false;

var c =  a? "hello" : "\"hi\", \"whats\", \"going\", '\"on\"";

alert(c);

// or

var c =  a? ["hello"] : ["hi", "whats", "going", "on"];

alert(c[0]);
alert(c[1]);
alert(c[2]);
//.. an so on

- - - - >>>> Try this fiddle