[英]unreachable statement, recursion (java)
我正在尝试解决一个简单的问题,选择一个字符串并反转字符串中单词的顺序。 我的代码如下:
public class reverse
{
public static String rev (String a){
String[] arr = a.split(" ");
int count = arr.length;
String result;
if (count <= 1){
result = arr[count];
return result;
}else{
String temp = arr[count];
return temp;
result = rev(temp);
count --;
}
}
}
我的困境是,在编译时,我在第13行收到一个错误,指出“ unreachable statement”。 在递归方面,我没有看到任何问题,但是对于解决此问题的任何帮助将不胜感激。
注意:我知道没有主要方法,我使用的是BlueJ IDE,可以在其中测试各个方法。
递归后,您需要return
else
块。 同样,数组从0
开始, length - 1
元素。 你可以做类似的事情,
int count = arr.length - 1;
if (count < 1) {
result = arr[count];
} else {
String temp = arr[count];
// return temp;
result = temp + " " + rev(a.substring(0, a.lastIndexOf(' ')));
// count--; // <-- updates local count uselessly.
}
return result;
根据前面的评论,您需要一个使用纯递归的解决方案。 因此,请尝试以下方法。 请注意,它目前非常脆弱,因为它依赖于单词被一个空格字符完全分隔的事实。 但是,如果您需要可靠的解决方案,我们当然可以对其进行修改。 请参阅IDEOne上的演示 。
public static String rev (String a){
int firstSpace = a.indexOf(' ');
boolean multipleWords = (firstSpace != -1);
if (!multipleWords) {
return a;
} else {
String firstWord = a.substring(0, firstSpace);
String remainingWords = a.substring(firstSpace + 1, a.length());
String reversedRemainingWords = rev(remainingWords);
String reversedWords = reversedRemainingWords + " " + firstWord;
return reversedWords;
}
}
这是一个修改后的答案,该答案使用子字符串而不是将其拆分为字符串数组。 我尚未对其进行测试,但我相信它会按预期工作。
public class reverse {
public static String rev (String a){
String result = "";
if(a.contains(' ')){
int i = a.lastIndexOf(' ') + 1;
result = a.substring(i) + " " + rev(a.substring(0, i-1));
}
else{
result = a;
}
return result;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.