2017-01-29 54 views
2

我正在編寫一個encodebat問題,並試圖從字符串中刪除一個字符並返回一個沒有該字符的字符串。以下是我的代碼。請告訴我它有什麼問題,因爲我不斷收到一條錯誤消息,說它必須返回一個字符串。編譯問題 - 必須返回字符串

public String missingChar(String str, int n) { 
    if (str.length() < n) { 
     int idx = str.indexOf(n); 
     String a = str.substring(0,idx); 
     String b = str.substring(idx+1, str.length()); 
     return a + b; 
    } 
} 

編譯問題:

Error: public String missingChar(String str, int n) {
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This method must return a result of type String

+4

如果'str.length()> = n',你不會返回任何東西... – rom1v

+1

你需要某種'else return ...;' – luk2302

回答

1

由於其他答案和我的評論已經提到你的代碼在else情況下缺少return語句。但是你的代碼邏輯也相當有缺陷:

  • 不做int idx = str.indexOf(n);
  • 反轉整個如果邏輯

,將產生:

public String missingChar(String str, int n) { 
    if (n < str.length()){ 
     String a = str.substring(0,n); 
     String b = str.substring(n+1, str.length()); 
     return a + b; 
    } 
    return str; 
} 

導致輸出hllo對於給定的輸入"hello", 1

請注意,我假設您嘗試比較n與缺陷的邏輯結果與字符串的長度在第一位:比較它的長度告訴我n應該是字符串的索引 - 但然後用這個nindexOf聯繫是絕對沒有意義的。同時它可能是n實際上是要刪除的字符串中的字符,但其類型應該是char,並且在字符串中找不到該字符時應該進行一些錯誤處理。

+0

非常感謝,好點。我審查了我的代碼,你是絕對正確的,我的代碼沒有意義。 – Kingsfull123

4

您需要返回String即使str.length() < n條件不滿足

public String missingChar(String str, int n) { 
    if (str.length() < n) { 
     int idx = str.indexOf(n); 
     String a = str.substring(0,idx); 
     String b = str.substring(idx+1, str.length()); 
     return a + b; 
    } 

    return str; 
} 
0

的問題是,所有的返回路徑必須返回一個字符串,在這裏你只返回字符串在其中之一...

0

錯誤或者是很清楚/簡單

你的方法必須返回即使這個條件不滿足

if (str.length() < n){ 

修改的方法,你滿足的返回值的合同方式的字符串。

public String missingChar(String str, int n) { 
    if (str.length() < n){ 
    int idx = str.indexOf(n); 
    String a = str.substring(0,idx); 
    String b = str.substring(idx+1, str.length()); 
    return a + b; 
    }else{ 
     return something; 
    } 
} 
-1

如果str.length()> = n,你就沒有回報!