2012-03-30 47 views
-1

按照業務需求,這取決於傳遞的輸入,我需要返回一個值appropiate在這種情況下焦炭提供默認值

例如如下圖所示

public String getValue() 
{ 

if (array.length <2) 
{ 
return ""; 
} 

if (array.length == 4) 
{ 
return "A"; 
} 
if (array.length == 3) 
{ 
return "B"; 
} 
if (array.length == 2) 
{ 
return "B"; 
} 

return "Z"; 

} 


char c = new Myclass().getValue().charAt(0); 

//我的問題如果長度小於2,則返回null,結果是拋出java.lang.StringIndexOutOfBoundsException:String index超出範圍:0異常

請讓我知道,最好的辦法是什麼這個 ??

+0

你的代碼格式不對 - 什麼是數組?此外,您尋求的答案是「處理此問題的最佳方法?」只有你知道的東西 – ControlAltDel 2012-03-30 09:31:29

+0

你能修改返回值的類型嗎? – zsxwing 2012-03-30 09:32:00

+0

我不知道你究竟在做什麼,但無論你做什麼似乎都是錯誤的。 – 2012-03-30 09:33:05

回答

0

你可以把它放在一個if語句如下

if(Myclass().getValue() != null && Myclass().getValue().length() > 0) { 
    c = new Myclass().getValue().charAt(0); 
} 

你可能會想定義的if語句外ç地方

2

的「處理最好的方法」是針對您的需求/上下文。

這裏有一些想法,你可以嘗試(根據您的需要/可能性):

  • 確保沒有長度< 2的陣列傳遞給你的函數。
  • 檢查對空字符串返回值和不採取chatAt()如果是空的
  • 返回一個特定的字符,而不是空字符串

您正在尋找第二。在這種情況下,你可以做這樣的事情:

char c = '\0'; // set it to some default value, in case the if's body is not executed. 
String val = new MyClass().getValue(); 
if (val != null && !val.isEmpty()) { 
    c = val.charAt(0); 
} 

注:以上檢查空和空字符串代碼,只是爲了安全起見(如處理的getValue正確將來可能的修改),因爲你不能叫charAt既不是空字符串也不是空字符串。

注意:""表示一個空字符串。空字符串是null

注意:isEmpty()檢查字符串是否爲空字符串。如果字符串null不要叫

注(因此在if評價的順序排列):由於有人指出,如果getValue()方法總是在無差錯的情況下返回長度爲1的字符串,而你不知道t使用除提取第一個字符之外的返回值,可以將返回類型更改爲char並返回您感興趣的特徵(例如'A'而不是"A")。這將要求你使用選項3並返回一個特殊字符(你的選擇,只是確保它不是後面返回的「正確」字符),以防出現錯誤(例如數組長度爲< 2)。這樣就不會爲一個字符創建字符串。

編輯:基於評論

+1

不要比較字符串wih'==':'val!=「」'==>'!val.isEmpty()' – assylias 2012-03-30 09:39:06

+0

謝謝,修正並添加了更多解釋 – Attila 2012-03-30 09:43:18

0

固定的代碼,你可以切換public String getValue()返回類型char(因爲你只返回字符無論如何),如果它不是一個選項,返回空字符:

if (array.length <2) 
{ 
    return "\0"; 
} 

只要你使用getValue()的樣子,我也建議使其靜態,並通過array作爲參數:

public static char getValue(Object[] array) 

並使用它像:

char c = Myclass.getValue(array);