Java文本反向输出程序遇无限循环输出过量错误求助
Java程序无限循环导致输出溢出的修复方案
问题分析
你的代码触发无限循环并产生过量输出的原因很明确:
- 循环未更新判断变量:
while循环的退出条件依赖最初读取的userInput,但循环内部没有重新读取新输入。只要第一次输入不是Done/done/d,循环会反复处理同一个字符串,无限输出反向结果,最终触发输出超限限制。 - 终止输入未处理:原逻辑在循环结束后才读取新输入,且没对终止关键词执行反向输出(比如示例中输入
done需要输出enod),不符合需求。
修正代码
import java.util.Scanner; public class LabProgram { public static void main(String[] args) { Scanner scnr = new Scanner(System.in); String userInput; int numChar; int i; // do-while保证先处理输入再判断退出 do { userInput = scnr.nextLine(); // 反向输出当前输入 numChar = userInput.length(); for (i = numChar; i > 0; --i) { System.out.print(userInput.charAt(i - 1)); } System.out.println(); // 换行分隔结果 } while (!userInput.equals("Done") && !userInput.equals("done") && !userInput.equals("d")); } }
修改要点
- 切换为do-while循环:先读取输入并完成反向输出,再判断是否终止,确保所有输入(包括终止关键词)都能按要求输出。
- 循环内更新输入:每次循环开始时读取新的用户输入,彻底避免重复处理同一字符串的无限循环问题。
- 补充换行逻辑:每次反向输出后添加换行,让输出格式和示例完全匹配。
测试结果
输入:
Hello there Hey done
输出:
ereht olleH yeH enod
完全符合需求,且不会再出现输出超限错误。
内容的提问来源于stack exchange,提问作者Aaron Zehnpfennig
相关产品推荐
相关产品推荐

