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

如何改写质数判断程序代码?程序存在输入无响应及无输出问题

质数判断程序的问题修复

原代码存在几个关键问题,导致无法正常输入和输出结果,以下是问题分析和修复方案:

问题分析

  • 输入提示未显示:使用System.out.print输出提示时,输出缓冲区未自动刷新,用户看不到输入提示,误以为无法输入。
  • 质数判断逻辑颠倒:当数字能被整除(num%i==0)时,说明不是质数,但原代码错误输出"Is prime"。
  • 无限循环:输出结果后未终止循环,会持续重复输出同一内容。
  • 边界值处理冗余:0、1这类非质数的判断放在循环内,完全可以提前处理,减少无效循环。

修复后的代码

import java.util.Scanner;

public class PrimeChecker {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num = 0;
        int i = 2;
        boolean isPrime = true;

        // 用println自动换行并刷新缓冲区,确保用户看到提示
        System.out.println("请输入要判断的数字:");
        num = sc.nextInt();

        // 提前处理边界值:0、1不是质数
        if (num <= 1) {
            System.out.println("不是质数");
            sc.close();
            return;
        }

        // 循环判断到平方根即可,优化性能
        while (i <= Math.sqrt(num)) {
            if (num % i == 0) {
                isPrime = false;
                break; // 找到因数后立即终止循环
            }
            i++;
        }

        // 根据标记输出结果
        System.out.println(isPrime ? "是质数" : "不是质数");
        sc.close();
    }
}

修复说明

  • 改用System.out.println输出提示,自动刷新缓冲区,确保用户能看到输入提示。
  • 新增isPrime布尔标记,统一管理判断状态,避免逻辑混乱。
  • 找到因数后立即break终止循环,避免无限输出。
  • 提前处理0、1的情况,无需进入循环;循环只判断到数字的平方根,优化性能。
  • 最后关闭Scanner资源,避免资源泄漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 01:15:52