2017-10-06 52 views
0

我在想以這種方式使用三元運算符動態初始化Java中的數組:靜態數組初始化內三元經營者未按預期

boolean errorMsg = true; 
... 
String[] elements = new String[] { 
    errorMsg ? "single_element" : "1st_element", "2nd_element" 
}; 

我只是想在陣列1元初始化如果errorMsgtrue,或者如果errorMsg是false,則使用2個元素。 是否errorMsgtruefalse,它始終使用後兩個元素初始化String[]。爲什麼會發生?

回答

2

這是爲什麼發生?

因爲errorMsg ? "single_element" : "1st_element"解析爲一個字符串,你有另一個字符串已"2nd_element"

你需要一個if else來初始化數組本身而不是內部的元素。

String[] elements = errorMsg? new String[] { "single_element" } : new String[] { "1st_element", "2nd_element" }; 

但是爲了保持我的juniours開發商高興,我寧願寫

 String[] elements = null; 
     if (errorMsg) { 
      elements = new String[] { "single_element" }; 
     } else { 
      elements = new String[] { "1st_element", "2nd_element" }; 
     } 
+0

謝謝你,我清楚地理解。我只是認爲可以聯合返回後面的元素「':」1st_element「,」2nd_element「'」。但逗號讓我困惑。 – another