Java 递归反向单词方法无法通过第一个字母
当我运行tester类时,它无法通过第一个字母。它输出一个“!”标记,而不是继续打印单词的其余部分。我想不出为什么它总是饿。递归方法似乎被卡住了,无法继续超过第一个字符。而不是打印“!olleH”我只得到“!”。谢谢Java 递归反向单词方法无法通过第一个字母,java,string,recursion,reverse,sentence,Java,String,Recursion,Reverse,Sentence,当我运行tester类时,它无法通过第一个字母。它输出一个“!”标记,而不是继续打印单词的其余部分。我想不出为什么它总是饿。递归方法似乎被卡住了,无法继续超过第一个字符。而不是打印“!olleH”我只得到“!”。谢谢 /** 类反转word的文本 */ 公判 { 私有字符串text=“”; /** 构造一个句子 @参数词 */ 公共语句(字符串文本输入) { text=textIN; } /** 获取文本 @返回文本 */ 公共字符串getText() { 返回文本; } /** 反向词 */
/**
类反转word的文本
*/
公判
{
私有字符串text=“”;
/**
构造一个句子
@参数词
*/
公共语句(字符串文本输入)
{
text=textIN;
}
/**
获取文本
@返回文本
*/
公共字符串getText()
{
返回文本;
}
/**
反向词
*/
公共字符串反向()
{
if(text.length()这里是最后一个程序(刚刚更改了return语句):
/**
类反转word的文本
*/
公判
{
私有字符串text=“”
/**
构造一个句子
@参数词
*/
公共语句(字符串文本输入)
{
text=textIN;
}
/**
获取文本
@返回文本
*/
公共字符串getText()
{
返回文本;
}
/**
反向词
*/
公共字符串反向()
{
如果(text.length()从代码的通读中读取,则反向方法似乎有效-它返回原始文本的反向。但是,它通过更改text
的值来执行此操作,并且它从不将最终值放入text
实际情况是,文本
缩短一个字符(从前面删除),直到只剩下一个字符,!
所以,你可以用你的主要方法来解决这个问题:
public static void main(String[] args)
{
Sentence greeting = new Sentence("Hello!");
String result = greeting.reverse();
System.out.println(result);
System.out.println("Expected: !olleH");
}
我希望你喜欢这样。仅供参考,你可以使用下面的-
String reversedString = new StringBuilder("Original String").reverse().toString();
还有一件事,如果传递null,代码将无法工作:)
代码的问题是,您正在修改else块中的文本
text = text.substring(1);
因此,最后它只包含!,虽然它提供了所需的整体功能,但它并不能解决OP所询问的特定问题。但在返回调用堆栈的过程中,最后一个字符与所有其他字符一起被追加。真正的问题是文本
每次都会被修改,而如果OP仅打印文本
,而不是reverse()
方法的结果。可能的重复
String reversedString = new StringBuilder("Original String").reverse().toString();
text = text.substring(1);