使用void reverse()方法递归反转句子(Java)
测试仪类别为:使用void reverse()方法递归反转句子(Java),java,Java,测试仪类别为: public class SentenceWithReverseTester { public static void main(String[] args) { String[] list = new String[]{"aba", "Madam, I'm Adam", "nut",
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);
}
}
我没有得到我想要的结果,我也不确定我在这里做错了什么。您没有在
reverse
方法中分配任何成员字段。您没有显示您有哪些字段,但我猜您有一个从toString
返回的字符串字段。您应该将shorter+first
分配给您有System.out.println
调用的位置。您应该使反向()
实际返回一个字符串,而不是void
,以便您可以使用反向的结果。因此,在方法的声明中将void
更改为String
。然后,您需要在方法中使用两个return
语句—一个用于基本情况,另一个用于递归情况
在递归情况下,return
语句类似于
return shorter.reverse() + first;
也就是说,你取较短句子的反面,把第一个字符放回末尾
在基本情况下,即方法的输入为“
,您只需编写
return "";
我将让您在方法的逻辑中找出在何处插入这两个return
语句。祝你好运。你得到了什么结果?它们与你所说的有什么不同?请提供一个例子。