[英]java: Trying to return a string value from an array of strings via a method
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;
}
}
}
我收到一個錯誤“此方法必須返回字符串類型的結果”。 但是兩個數組valueArr和keyArr都是String類型的數組。 我知道keyArr [i]和valueArr [i]的值是字符串,因為如果我將方法的返回類型更改為其他類型,則表示它期望其他內容並得到了字符串。
“字符串類型”問題較少,而“必須”問題更多。 例如,如果您傳遞未出現在數組中的字符串,會發生什么情況? 在這種情況下,您的函數實際上不會返回任何東西。
如果您確定該鍵將始終存在,請考慮在行尾添加一條線,例如
throw new RuntimeException("Key not found?");
這樣函數就不會掉到頭了。 或者,嘗試添加類似
return null;
這樣您就可以在這種情況下顯式返回某些內容。
那是因為它並不總是返回String。 例如,如果找不到密鑰, if (key.equals(keyArr[i])) {
永遠不會為真,因此return valueArr[i];
將永遠不會被執行。
要解決此問題,您需要執行以下操作:
在for loop
之后添加return
語句,如果找不到匹配項,則返回一些內容 ,例如:
public String GetValue(String key) { for (int i = 0; i < length; i++) { if (key.equals(keyArr[i])) { return valueArr[i]; } } return null; }
在調用方法中處理return type
(即,添加空檢查或在找不到匹配項的情況下執行適當的操作)。
問題是當您編寫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 ;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.