我正在处理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
答案 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);
那会产生:
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,则无法返回!