我的方法有问题,应该使用代码,在表中搜索代码,然后使用该代码索引返回数据;这就是我现在使用的。 Eclipse告诉我结果可能没有初始化。但我没有看到另一种方法。
public String getService(String serviceCode){
String result;
for(int i=0;i<data.length;i++){
for(int j=0;j<3;j++){
if(serviceCode==data[i][j]){
result = data[i][j+1].toString() + data[i][j+2].toString();
}
}
}
return result;
}
答案 0 :(得分:2)
Eclipse告诉我结果可能没有初始化
这是真的:
public String getService(String serviceCode){
String result; // <--
for(int i=0;i<data.length;i++){
for(int j=0;j<3;j++){
if(serviceCode==data[i][j]){
result = data[i][j+1].toString() + data[i][j+2].toString();
}
}
}
return result;
}
如果你的循环没有被执行,那么结果将不会被初始化。
将其更改为
String result = null;
作为旁注,您不应该使用==
来比较字符串,您应该使用.equals
:
if(serviceCode.equals(data[i][j]))
答案 1 :(得分:1)
您在字符串上使用==
,它比较引用,而不是实际相等。请始终使用string.equals(otherstring)
。
至于您的问题,String result;
永远不会初始化为null
。如果您将其声明为字段,则会自动为其指定值null
,但在方法范围内,它是未确定的。数据是发生在那里的任何垃圾字节。
String result = null;
。
答案 2 :(得分:0)
问题是,如果data.length
等于0,那么你就不会得到任何结果 - 你必须在功能上思考你的方法在这种情况下应该做些什么 - 也许IllegalStateException
对你有用?