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]的值是字符串,因为如果我将方法的返回类型更改为其他内容,则表示它预期其他内容并获得字符串。
答案 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 ;
}