You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java程序如何实现循环运行直至主动取消?新手代码报错求助

解决Java句子反转工具的循环输入问题

嘿,作为Java新手遇到这种循环输入的问题太正常啦,我来帮你搞定这个可以反复输入直到主动退出的句子反转工具~

你的代码里存在的几个核心问题:

  • 嵌套了不必要的无限循环:while(run)已经是控制循环的逻辑,里面又加for(;;)会导致程序无法正常退出
  • Scanner在循环内重复创建:每次循环都新建Scanner实例会浪费系统资源,还可能引发输入异常
  • 缺少主动退出的判断逻辑:没有给用户提供取消程序的入口
  • 代码不完整:String str = ...部分没有完成输入获取的逻辑

修复后的完整可运行代码:

import java.util.Scanner;

public class Reverser {
    public static void main(String[] args) {
        // 把Scanner放在循环外初始化,避免重复创建浪费资源
        Scanner scan = new Scanner(System.in);
        boolean run = true;

        while(run) {
            System.out.println("Hello Welcome To The Sentence Reverser !");
            System.out.println("Enter a sentence below to reverse (输入quit可退出):");
            
            // 获取用户输入的完整句子
            String str = scan.nextLine();
            
            // 判断用户是否要退出程序,忽略大小写适配不同输入习惯
            if(str.equalsIgnoreCase("quit")) {
                run = false;
                System.out.println("程序已退出,再见!");
                continue;
            }
            
            // 用StringBuilder高效实现字符串反转,这是Java里常用的反转方式
            String reversedStr = new StringBuilder(str).reverse().toString();
            System.out.println("反转后的句子:" + reversedStr);
            System.out.println("------------------------");
        }
        
        // 程序结束前关闭Scanner释放资源
        scan.close();
    }
}

关键细节说明:

  • Scanner复用:只在程序启动时创建一次Scanner实例,循环内重复使用,最后记得关闭资源避免内存泄漏
  • 友好退出逻辑:通过判断用户输入是否为quit(支持大小写)来触发退出,给用户明确的操作指引
  • 高效反转实现:利用StringBuilder的reverse()方法完成字符串反转,比手动遍历字符拼接效率高很多

内容的提问来源于stack exchange,提问作者Fahd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:12:10