我对这个编程领域非常陌生,我正在学习5级课程,现在我正在学习Java.

我在家里试着做一些练习,现在我正在试着建立一个算法,让用户 Select (N)个数字,然后随机显示它们,并计算所有负数的平均值和所有正数的百分比.

但是我的计数器有一个错误,说它不能被0整除,我甚至试着把它初始化为1,在我做数学之前,我从他那里取-1来计算它的原始值,但它不起作用.

会喜欢这里的一些亮点!非常感谢!

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);      //ler stands for read 
        int nPos = 0, nNeg = 0, totalPos = 0, totalNeg = 0, contador = 1; 

//contador stands for counter 
        
        int N;
        double mediaNeg, percPos; //media stands for average 

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

// this print stands for insert the number of numbers you intend to insert
      
        N = ler.nextInt();

        for (int i = 0; i == N-1; i++){
            int num = random.nextInt(101) - 50;
            System.out.println(num);
            contador ++;
                if (num > 0){
                    nPos ++;
                    totalPos += num;
                }
                else if (num < 0){
                    nNeg ++;
                    totalNeg += num;
                }

        }

        contador = contador - 1;
        mediaNeg = (double) totalNeg / nNeg;
        percPos = (double) (totalPos / contador) * 100;

        System.out.println("Média dos negativos = " +mediaNeg);
        System.out.print("Percentagem dos positivos = " +percPos); 

//These two are supposed to show the average of the negative numbers, and the percentage of the positives. 


    }
}

推荐答案

您的代码似乎基本正确,但在for循环条件中有一个小问题.当i小于N而不是i == N-1时,循环应该继续.正确的环路条件是i < N.以下是更正后的代码:

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, totalPos = 0, totalNeg = 0, contador = 1;

        int N;
        double mediaNeg, percPos;

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

        N = ler.nextInt();

        for (int i = 0; i < N; i++) { // Corrected loop condition
            int num = random.nextInt(101) - 50;
            System.out.println(num);
            contador++;
            if (num > 0) {
                nPos++;
                totalPos += num;
            } else if (num < 0) {
                nNeg++;
                totalNeg += num;
            }
        }

        contador = contador - 1;

        // Check if nNeg is not zero to avoid dividing by zero
        if (nNeg != 0) {
            mediaNeg = (double) totalNeg / nNeg;
            System.out.println("Média dos negativos = " + mediaNeg);
        } else {
            System.out.println("Não há números negativos para calcular a média.");
        }

        // Calculate percentage only if there are positive numbers
        if (contador != 0) {
            percPos = (double) (totalPos / contador) * 100;
            System.out.print("Percentagem dos positivos = " + percPos);
        } else {
            System.out.println("Não há números positivos para calcular a percentagem.");
        }
    }
}

These changes should help you avoid the divide-by-zero error and provide more accurate results. I also added some checks to handle cases where there are no negative or positive numbers entered by the user.

Java相关问答推荐

基于仅存在于父级中的字段查询子文档?

如何粘合(合并)文件Lucene?

为什么Java的代码工作(if condition内部的实例)

为什么我们不能实现两个接口,其中一个接口有相同的签名,其中一个接口有默认的实现在java?'

使用Spring Boot3.2和虚拟线程的并行服务调用

Java中将文本拆分为数字或十进制数字和字符串

如何将Pane的图像快照保存为BMP?

如何使用log4j2(Json)记录由";异常引起的所有";?

内存和硬盘中的Zip不同,这会导致下载后的Zip损坏

Groovy/Java:匹配带引号的命令选项

在settings.gradle.kts和Build.gradle.kts中使用公共变量

基于配置switch 的@Controller的条件摄取

当b是一个字节并且在Java中值为-1时,为什么b>;>;>;1总是等于-1?

如果List是一个抽象接口,那么Collectors.toList()如何处理流呢?

Java泛型方法重载

MapStruct记录到记录的映射不起作用

在JSON上获取反斜杠

如何使用命令行为Java应用程序生成烟雾测试用例

如何组合Mono和Flux

具有 DayOfWeek 列表的 JPA 实体