Java从表中读取

时间:2014-01-26 13:42:33

标签: java

我的方法有问题,应该使用代码,在表中搜索代码,然后使用该代码索引返回数据;这就是我现在使用的。 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;
}

3 个答案:

答案 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对你有用?