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

Java质数判断while循环出现除以零(/ by zero)异常求助

质数判断代码的除以零异常分析与解决

问题描述

我编写了一段使用while循环判断质数的Java代码,运行时能正常输出判断结果,但最终会抛出「Exception in thread "main" java.lang.ArithmeticException: / by zero」异常。我特意将just_number += 1放在循环开头试图解决该问题,但并未成功。代码如下:

Scanner new_input = new Scanner(System.in);
int number = new_input.nextInt();
boolean True = true;
int just_number = 0;
int sum = 0;

while (True){
    just_number += 1;
    if (number % just_number == 0){
        sum += 1;
        if (just_number == number && sum == 2){
            System.out.println(number + " is prime number");
        }
        else if(just_number == number && sum != 2){
            System.out.println(number + " isn't prime number");
        }
    }
    else{
        continue;
    }
}

异常原因

核心问题是无限循环未终止:你用了while(True)死循环,哪怕已经输出了判断结果,循环依然会持续执行。just_number会一直递增,直到触发int类型的溢出——当just_number达到Integer.MAX_VALUE后再加1,会变成Integer.MIN_VALUE(负数),继续递增最终会回到0,此时执行number % just_number就会抛出除以零的算术异常。

修正方案

解决的关键是在输出结果后终止循环,同时可以优化质数判断的逻辑,提升效率。以下是修正后的代码:

import java.util.Scanner;

public class PrimeChecker {
    public static void main(String[] args) {
        Scanner newInput = new Scanner(System.in);
        int number = newInput.nextInt();
        newInput.close();

        // 处理特殊情况:小于2的数都不是质数
        if (number < 2) {
            System.out.println(number + " isn't prime number");
            return;
        }

        boolean isPrime = true;
        int justNumber = 2;

        // 只需遍历到平方根,减少循环次数
        while (justNumber <= Math.sqrt(number)) {
            if (number % justNumber == 0) {
                isPrime = false;
                break; // 找到因数直接终止循环
            }
            justNumber++;
        }

        System.out.println(number + (isPrime ? " is prime number" : " isn't prime number"));
    }
}

修正说明

  • 移除死循环,改为遍历到Math.sqrt(number),一旦找到因数立即跳出循环,避免无效计算
  • 单独处理小于2的输入(1、0、负数),这类数本身就不是质数
  • 规范变量命名,符合Java编码习惯
  • 关闭Scanner输入流,避免资源泄漏
  • 简化判断逻辑:默认假设是质数,找到因数则标记为非质数,代码更简洁易读

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 18:52:47