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

Java程序除零错误求助:随机数统计功能异常

解决Java程序的除零错误及逻辑问题

问题根源拆解

你的程序触发除零异常,同时存在循环逻辑、需求理解的多重问题:

  • 循环条件错误:原代码for (int i = 0; i == N-1; i++)仅在N=1时执行一次,其余情况循环体完全不运行。导致nNeg、nPos等统计变量始终为0,后续计算必然触发除零异常。
  • 冗余变量与逻辑偏差:用contador统计数字数量完全多余,输入的N就是总数;另外需求中的「正数占比」是指正数个数占总数量的比例,原代码错误使用正数总和计算,不符合需求。
  • 未处理边界情况:即使循环正常运行,若生成的随机数中没有负数,nNeg仍为0,计算平均值时还是会触发除零异常。

修正后的完整代码

import java.util.Random;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Random random = new Random();
        Scanner ler = new Scanner(System.in);
        int nPos = 0, nNeg = 0, totalNeg = 0; 

        int N;
        double mediaNeg, percPos;

        System.out.println("Insira o número de números que pretende inserir: ");
        N = ler.nextInt();

        // 修正循环条件,确保生成N个随机数
        for (int i = 0; i < N; i++) {
            int num = random.nextInt(101) - 50;
            System.out.println(num);
            
            if (num > 0) {
                nPos++;
            } else if (num < 0) {
                nNeg++;
                totalNeg += num;
            }
            // 0既不归类为正数也不归类为负数
        }

        // 处理无负数的边界情况,避免除零
        if (nNeg == 0) {
            System.out.println("Média dos negativos = 未生成负数,无法计算平均值");
        } else {
            mediaNeg = (double) totalNeg / nNeg;
            System.out.println("Média dos negativos = " + mediaNeg);
        }

        // 修正正数占比逻辑:用正数个数除以总数量计算百分比
        if (N == 0) {
            System.out.println("Percentagem dos positivos = 未生成数字,无法计算占比");
        } else {
            percPos = (double) nPos / N * 100;
            System.out.println("Percentagem dos positivos = " + percPos + "%");
        }

        ler.close(); // 关闭Scanner,避免资源泄漏
    }
}

核心修正点说明

  1. 循环条件改为i < N,保证严格执行N次,生成指定数量的随机数;
  2. 移除冗余的contador和totalPos变量,简化代码逻辑;
  3. 增加边界判断,在无负数或无数字时给出友好提示,避免除零异常;
  4. 修正正数占比的计算逻辑,符合需求中「占比」的定义(个数比例而非总和比例)。

内容的提问来源于stack exchange,提问作者José Filipe Silva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 06:06:15