Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 递归反向单词方法无法通过第一个字母_Java_String_Recursion_Reverse_Sentence - Fatal编程技术网

Java 递归反向单词方法无法通过第一个字母

Java 递归反向单词方法无法通过第一个字母,java,string,recursion,reverse,sentence,Java,String,Recursion,Reverse,Sentence,当我运行tester类时,它无法通过第一个字母。它输出一个“!”标记,而不是继续打印单词的其余部分。我想不出为什么它总是饿。递归方法似乎被卡住了,无法继续超过第一个字符。而不是打印“!olleH”我只得到“!”。谢谢 /** 类反转word的文本 */ 公判 { 私有字符串text=“”; /** 构造一个句子 @参数词 */ 公共语句(字符串文本输入) { text=textIN; } /** 获取文本 @返回文本 */ 公共字符串getText() { 返回文本; } /** 反向词 */

当我运行tester类时,它无法通过第一个字母。它输出一个“!”标记,而不是继续打印单词的其余部分。我想不出为什么它总是饿。递归方法似乎被卡住了,无法继续超过第一个字符。而不是打印“!olleH”我只得到“!”。谢谢

/**
类反转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);