gpt4 book ai didi

java - 递归堆栈溢出错误

转载 作者:行者123 更新时间:2023-12-01 13:37:52 25 4
gpt4 key购买 nike

我的目标是制作一个小程序,它接受扫描仪输入并使用堆栈和递归来反转单词。

请注意,我知道如何制作一个可以执行此操作的程序。我只是无法同时使用堆栈和递归。

例如输入“black is cat The”将输出“The cat is black”

我所遇到的导致了 StackOverflowError,其中注释行显示。

任何有关如何解决此问题或做得更好的想法将不胜感激。

import java.util.*;

public class Reverse
{

public static String wordReverse(String[] theWords) {


Stack <String> stacker = new Stack <String>();

for(String wordsHold : theWords) {
stacker.push(wordsHold);
}

while ( !stacker.empty() ){
stacker.pop();
}

return wordReverse(theWords); // Cause of StackOverflowError
}

public static void main(String args[])

{

Scanner takeIn = new Scanner(System.in);

String allWords = takeIn.nextLine();

String[] goodWords = allWords.split(" ");

System.out.println(wordReverse(goodWords));

takeIn.close();
}
}

最佳答案

wordReverse()总是打电话wordReverse(theWords) ,递归永无止境。这会导致程序堆栈溢出。它与stacker无关。虽然有变数。巧合的是,您的无限递归方法恰好与 Stack<> 一起使用。类。

您可以考虑实现您的wordReverse()像这样

public static String wordReverse(String[] theWords) {

Stack<String> stacker = new Stack<String>();

for (String wordsHold : theWords) {
stacker.push(wordsHold);
}

String ret = "";
while (!stacker.empty()) {
ret = ret + stacker.pop();
}

return ret;
}

关于java - 递归堆栈溢出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21127752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com