编译问题 - 必须返回一个String

时间:2017-01-29 12:27:10

标签: java string methods

我正在处理codingbat问题并尝试从String中删除char并返回不带该char的字符串。以下是我的代码。请告诉我它有什么问题,因为我一直收到一条错误消息,说它必须返回一个字符串。

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;
    }
}

编译问题:

  

错误:public String missingChar(String str,int n){
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^       此方法必须返回String

类型的结果

5 个答案:

答案 0 :(得分:3)

即使未满足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;
}

答案 1 :(得分:1)

正如其他答案和我的评论已经提到的那样,你的代码在else案例中缺少一个return语句。但是你的代码逻辑也存在很大的缺陷:

  • 不要int idx = str.indexOf(n);
  • 反转整个if逻辑

那会产生:

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应该是字符串的索引 - 但是用indexOf调用n完全没有意义。同时,n实际上可能是要删除的字符串中的字符,但其类型应为char,如果找不到字符,则应该进行一些错误处理字符串。

答案 2 :(得分: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;
  }
}

答案 3 :(得分:-1)

问题是所有返回路径都必须返回一个字符串,这里只返回其中一个字符串...

答案 4 :(得分:-1)

如果str.length()&gt; = n,则无法返回!