测试者类是:
public class SentenceWithReverseTester
{
public static void main(String[] args)
{
String[] list = new String[]{"aba",
"Madam, I'm Adam",
"nut",
"A man, a plan, a canal, Panama",
"wonderful",
"Go hang a salami, I'm a lasagna hog",
"race car",
"1",
"",
"zero",
"@!:"} ;
for (String line : list) {
SentenceWithReverse sentence = new SentenceWithReverse(line) ;
sentence.reverse() ;
System.out.println(line + " reversed becomes........") ;
System.out.println(sentence.toString()) ;
System.out.println("----------------------------") ;
}
}
}
对于我的反向方法:
public void reverse()
{
String s = super.toString();
if(s.length() > 0)
{
String first = s.substring(0,1);
String remaining = s.substring(1, s.length());
SentenceWithReverse shorter = new SentenceWithReverse(remaining);
shorter.reverse();
System.out.println(shorter + first);
}
}
我没有得到我想要的结果,而且我不确定我在这里做错了什么。
答案 0 :(得分:3)
您应该让reverse()
实际返回String
,而不是void
,以便您可以使用撤消的结果。因此,请在方法声明中将void
更改为String
。那么你在方法中需要一些return
语句 - 一个用于基本案例,一个用于递归案例。
在递归的情况下,return
语句将类似于
return shorter.reverse() + first;
也就是说,你采用较短句子的反向,并将第一个字符放回到最后。
在基本情况下,也就是说,方法的输入是""
,你可以写
return "";
我将留给您,以确定在您的方法逻辑中插入这两个return
语句的位置。祝你好运。
答案 1 :(得分:-1)
您未在reverse
方法中分配任何成员字段。你没有显示你有哪些字段,但我猜你有一个从toString
返回的字符串字段。您应该将shorter + first
分配给System.out.println
来电。