簡體   English   中英

java:嘗試通過方法從字符串數組返回字符串值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM