java:尝试通过方法从字符串数组中返回字符串值

时间:2017-01-28 23:52:38

标签: java arrays string

public String GetValue(String key) {
    for (int i = 1; i<=length; i++) {
        if (key.equals(keyArr[i])) {
            return valueArr[i];
        }
    }
}
public String GetKey(String value) {
    String key;
    for (int i = 1; i<=length; i++) {
        if (value.equals(valueArr[i])) {
            key = keyArr[i];
            return key;
        }
    }
}

我收到错误&#34;此方法必须返回类型字符串&#34;的结果。但是两个数组valueArr和keyArr都是String类型数组。我知道keyArr [i]和valueArr [i]的值是字符串,因为如果我将方法的返回类型更改为其他内容,则表示它预期其他内容并获得字符串。

3 个答案:

答案 0 :(得分:1)

&#34;类型为String&#34;更多的是&#34;必须。&#34;例如,如果传入一个不会出现在数组中的字符串,会发生什么?在这种情况下,您的函数实际上永远不会返回任何内容。

如果您确保密钥始终存在,请考虑在最后添加一行

throw new RuntimeException("Key not found?");

这样功能就不会结束。或者,尝试添加类似

的行
return null;

这样你就可以明确地返回一些东西。

答案 1 :(得分:1)

那是因为它并不总是返回一个String。例如。如果找不到密钥,if (key.equals(keyArr[i])) {永远不会成立,因此,return valueArr[i];永远不会被执行。

要解决此问题,您需要执行以下操作:

  • return之后添加for loop语句,如果找不到匹配项,则返回某些内容,例如:

    public String GetValue(String key) {
        for (int i = 0; i < length; i++) {
            if (key.equals(keyArr[i])) {
                return valueArr[i];
            }
        }
        return null;
    }
    
  • 处理调用方法中的return type(例如,如果未找到匹配项,则添加空检查或执行适当的操作)。

答案 2 :(得分:0)

问题是,当您写入类型String时,您的方法中必须return String值。所以对于示例GetValue可能是这样的:

public String GetValue(String key) {
    for (int i = 0; i<keyArr.length; i++) {
        if (key.equals(keyArr[i])) {
            return valueArr[i];
        }
    }
    return "";
}

注意索引,必须从数组中的0开始到length -1

和你的第二种方法:

public String GetKey(String value) {
    String key = "";
    for (int i = 0; i<value.length; i++) {
        if (value.equals(valueArr[i])) {
            key = keyArr[i];
            return key;
        }
    }
    return key ;
}