根据业务要求,根据传递的输入,我需要返回适当的值
例如如下所示
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:字符串索引超出范围:0异常
请让我知道,处理这个问题的最佳方法是什么?
答案 0 :(得分: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);
}
注意:上面的代码检查null和空字符串,只是为了安全(例如正确处理getValue
可能的未来修改),因为你不能在空字符串上调用charAt
,也不是空洞的。
注意:""
表示空字符串。空字符串是null
。
注意:isEmpty()
检查字符串是否为空字符串。如果字符串是null
,则不要调用(因此if
中的评估顺序
注意:正如其他人所指出的,如果getValue()
方法在非错误情况下总是返回长度为1的字符串,并且除了提取第一个字符之外不使用返回值,则可以将返回类型更改为char
并返回您感兴趣的字符(例如'A'
而不是"A"
)。这将要求您使用选项3并返回一个特殊字符(您的选择,只是确保它不是错误情况下的“正确”字符之一)(例如长度数组<2)。这样就没有为一个角色创建的字符串。
编辑:基于评论的固定代码
答案 1 :(得分:0)
您可以将它放在if语句中,如下所示
if(Myclass().getValue() != null && Myclass().getValue().length() > 0) {
c = new Myclass().getValue().charAt(0);
}
你可能想要在某个地方的if语句之外定义c
答案 2 :(得分:0)
您可以将public String getValue()
返回类型切换为char
(因为您只返回字符),或者,如果它不是一个选项,则返回空字符:
if (array.length <2 )
{
return "\0";
}
按照您使用getValue()
的方式,我还建议将其设为静态并将array
作为参数传递:
public static char getValue(Object[] array)
并使用它:
char c = Myclass.getValue(array);