代码之家  ›  专栏  ›  技术社区  ›  José Filipe Silva

除以0错误/对不起,我的句子是PT

  •  2
  • José Filipe Silva  · 技术社区  · 1 年前

    我对这个编程领域还很陌生,我正在学习5级课程,现在正在学习java。

    我试着在家里做一些练习,现在我正试图建立一个算法,让用户选择(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. 
    
    
        }
    }
    
    2 回复  |  直到 1 年前
        1
  •  2
  •   Owais Yosuf    1 年前

    您的代码看起来基本正确,但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.");
            }
        }
    }
    

    这些更改应该有助于避免除以零的误差,并提供更准确的结果。我还添加了一些检查,以处理用户没有输入负数或正数的情况。

        2
  •  0
  •   José Filipe Silva    1 年前

    对不起,大家,我的评论放错了,现在我不知道如何编辑帖子。第一次使用这个,我真的很抱歉,但基本上我的评论指的是一些东西,不是在下面,而是在上面。谢谢