Java 编译问题--必须返回字符串

Java 编译问题--必须返回字符串,java,string,methods,Java,String,Methods,我正在处理一个codingbat问题,试图从字符串中删除一个字符,并返回一个没有该字符的字符串。下面是我的代码。请告诉我它出了什么问题,因为我一直收到一条错误消息,说它必须返回字符串 public String missingChar(String str, int n) { if (str.length() < n) { int idx = str.indexOf(n); String a = str.substring(0,idx);

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

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){
如果(str.length()
编译问题:

错误:公共字符串缺少字符(字符串str,int n){
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 此方法必须返回字符串类型的结果


即使未满足
str.length()
条件,也需要返回
String

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;
}
 if (str.length() < n){ 
public String missingChar(String str,int n){
如果(str.length()
问题是所有返回路径都必须返回一个字符串,这里您只在其中一个路径中返回字符串…

错误非常清楚/简单

即使不满足此条件,您的方法也必须返回字符串

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;
}
 if (str.length() < n){ 
if(str.length()
修改该方法,使其符合具有返回值的合同

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;
  }
}
public String missingChar(String str,int n){
如果(str.length()
如果str.length()>=n,则您没有返回!

因为其他答案和我的评论已经提到,在else情况下,您的代码缺少返回语句。但您的代码逻辑也有很大缺陷:

  • 不要做
    intidx=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;
}
public String missingChar(String str,int n){
如果(n
这将导致给定输入的输出
hllo
“hello”,1


请注意,我对缺陷逻辑结果的假设是,您首先尝试将
n
与字符串的长度进行比较:将其与长度进行比较告诉我
n
应该是字符串的索引-但是,使用
n
调用
indexOf
绝对没有意义可能是
n
实际上是要删除的字符串中的字符,但是它的类型应该是
char
,如果在字符串中找不到该字符,您应该进行一些错误处理。

如果
str.length()>=n
,你不返回任何东西…你需要某种
否则返回…;
非常感谢,很好的观点。我检查了我的代码,你是绝对正确的。我的代码没有意义。