一系列数字的算术平均值



声明说:

从键盘上连续读取整数。当你读到-1时程序必须指示我们读取了多少介于1和100之间的数字他们的算术平均值是多少(MediaNum.java)。

我推送这个代码:

import java.util.*;

public class MediaNum {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        double number, sum=0, medium;
        int counter=0;
        System.out.println("When you want to finish enter '-1'.");
        System.out.println("Enter the numbers:");
        number = entrada.nextDouble();
        while (number != -1){
            sum = sum + number;
            counter++;
            number = entrada.nextDouble();
        }
        if (number == -1){
            counter++;
            System.out.println("counter");
        }
        if (number == -1 && number < 101){
            medium = sum/counter;
            System.out.println("The medium of the numbers entered is: "+medium);
        }
    }   
}

介质的部分和我输入-1时计数器结束的部分是正确的,但错误是当我输入一个大于100的数字时,计数器计数这个数字,介质将不正确。

如果符合条件,只需计算数字:

while (number != -1){
    if(number >= 1 && number <= 100) {
        sum += number;
        counter++;
    }
    number = entrada.nextDouble();
}

的问题

  while (number != -1){
            sum = sum + number;
            counter++;
            number = entrada.nextDouble();
        }

你正在添加每个数字,你只想要那些<100

尝试此代码

import java.util.*;

public class MediaNum {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        double number=0, sum=0, medium=0;
        int counter=0;
        System.out.println("When you want to finish enter '-1'.");
        while(number!=-1){
            System.out.println("Enter the numbers:");
            number = entrada.nextDouble();
            if((number>100 || number<1)&&number!=-1){
                continue;
            }
            if(number==-1){
                break;
            }
            sum += number;
            counter++;
        }
        System.out.println("counter :" +counter);
        if(counter!=0){
            medium = sum/counter;
        }
        System.out.println("The medium of the numbers entered is: "+medium);
    }
}

您可以试试这个。它有效。我是用递归函数做的。如果有效,请添加注释。

import java.util.*;
class AM{
    double s=0;int co=0;
    double p;
    public void show(){
        Scanner sc=new Scanner(System.in);
        System.out.println("Enter the number:-");
        p=sc.nextDouble();
        if(p!=-1&&p<=100){
            s+=p;
            co++;
            show();
        }
        else
        {
            System.out.println("The average is:-"+(s/co));
            System.out.println(co+" "+"numbers were entered.");
        }
    }
}

最新更新