Compile problems — must return a String
我正在处理一个codingbat问题,试图从一个字符串中删除一个char,并返回一个没有该char的字符串。下面是我的代码。请告诉我它出了什么问题,因为我一直收到一条错误消息,说它必须返回一个字符串。
1 2 3 4 5 6 7 8
| 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
- 如果是str.length() >= n,你什么都不退…
- 你需要某种东西
即使不满足str.length() < n条件,也需要返回String。
1 2 3 4 5 6 7 8 9 10
| 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 2 3 4 5 6 7 8
| 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 ;
} |
这导致给定输入"hello", 1的输出hllo。
请注意,我假设的缺陷逻辑结果是,您试图将n与字符串的长度进行比较:将其与长度进行比较告诉我,n应该是字符串的一个索引,但是将indexOf与n进行比较绝对没有意义。同时,可能是n实际上是要删除的字符串中的字符,但是它的类型应该是char,如果在字符串中找不到字符,您应该进行一些错误处理。
- 非常感谢,说得对。我检查了我的代码,你是绝对正确的,我的代码没有意义。
错误很清楚/很简单
即使不满足此条件,您的方法也必须返回字符串
修改方法,使您满足带有返回值的合同。
1 2 3 4 5 6 7 8 9 10
| 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 ;
}
} |
如果str.length()>=n,则没有返回!
问题是所有的返回路径都必须返回一个字符串,这里只返回其中一个字符串…