2012-03-30 49 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);