繁体   English   中英

在“for循环”中计算数字并返回java中的平均值、最小值、最大值

[英]Count numbers in a “for loop” and give back average, min, max value in java

用户应该输入一个数字“x”,然后输入“x”个数字的计数,例如输入 = 3,然后是 3 个随机数,如 3、5、7。

之后程序应该给出这个“x”数字的平均值、最小值和最大值的输出。 所以它必须读取数字,但我不知道如何完成。

它应该在没有数组和 for 循环的情况下完成。

我在这里没有找到可能的解决方案,但也许我没有进行正确的搜索。

所以这是我到目前为止所得到的:

import java.util.Scanner;

public class Statistic
{
public static void main (String[] args)
 {
    // Variables
    Scanner input = new Scanner(System.in);
    int number1;
    int numbers;
    double averageValue;

    // Input
    System.out.println("\n\n####################################################################");
    System.out.print("\n Pls enter a number: ");
    number1 = input.nextInt();
    System.out.print(" Pls enter " + number1 +" numbers: ");
    numbers = input.nextInt();

    for (int count = 0; count < number1; count ++) {
        System.out.println(numbers); //Just for me to see which numbers are read by the programm
    }
    averageValue = numbers / number1;

    // Output
    System.out.println("\n Biggest number: " + Math.max(numbers));
    System.out.println("\n Smallest number: " + Math.min(numbers));
    System.out.print("\n Average value: " + averageValue);

 }
} 

但它只打印出并使用“数字”输入的第一个数字进行计算。 此外,我不确定如何使用“Math.max”进行随机数字计数。

问题在这里:

System.out.print(" Bitte geben Sie " + number1 +" Zahlen ein: ");
numbers = input.nextInt();

nextInt()只保存一个int。 当然,您输入的每个后续数字都会丢失。

你需要做的是移动内部的这种说法for循环你的想法来工作。

此外,您不能在这里使用 min 和 max。 min 和 max 比较两个数字并返回两者中较大的一个。 为了您的目的,您需要在循环内部检查最大和最小的数字,然后相应地输出它。

您将需要 6 个变量:min = 0、max = 0、avg、sum = 0、count、num。 (平均变量是可选的)

程序流程将是:

  • 输入您想输入的数字 -> 存储在变量计数中
  • 使用一些循环来循环计数次数,并在每次迭代中将用户值存储在变量 num 中。
  • 按用户输入的数字递增总和。 总和 += 数量;
  • 检查输入的数字是否小于当前最小值。 如果 true 将 min 存储为该数字。
  • 与 max 变量的 min 相同。
  • 当循环退出时,您将存储 min、max、sum 和 count 变量。 要计算 avg devide sum 与计数,然后就可以了。 平均=总和/计数。

我可以看到的一些错误

System.out.print(" Pls enter " + number1 +" numbers: "); numbers = input.nextInt();

您需要一个循环和数组来读取和存储所有元素。


要获得平均值,您首先需要对数组中的所有元素求和,然后除以数组的长度。


要在数组中查找最小值和最大值,您不能使用Math.min()Math.max()方法,因为这些方法获取两个参数并返回最小值/最大值。


你的代码应该是这样的

笔记

  • 如果您不能使用 Java 8,则必须替换Arrays.stream(numbers).max().getAsInt(); Arrays.stream(numbers).min().getAsInt(); 使用在数组中查找最大值/最小值的辅助方法。
  • 如果你可以使用 Java 8 你可以计算 sum int sum = Arrays.stream(numbers).reduce(0, (x, y) -> x + y); 而是在 for 循环中。

.

public class Statistic {
    public static void main(String[] args) {
        // Variables
        Scanner input = new Scanner(System.in);

        // Input
        System.out.println("\n\n####################################################################");
        System.out.print("\n Pls enter a number: ");

        int number1 = input.nextInt();
        System.out.println(" Pls enter " + number1 + " numbers: ");
        int[] numbers = new int[number1];
        for (int i = 0; i < number1; i++) {
            System.out.println("Enter next number");
            numbers[i] = input.nextInt();
        }

        // Find min and max values
        int max = Arrays.stream(numbers).max().getAsInt();
        int min = Arrays.stream(numbers).min().getAsInt();
        System.out.println("\n Biggest number: " + max);
        System.out.println("\n Smallest number: " + min);

        // Get average value
        int sum = 0;
        for (int num : numbers) {
            sum = sum + num;
        }
        double averageValue = (double) sum / number1;
        System.out.print("\n Average value: " + averageValue);

    }
}

首先,您的代码在逻辑上是正确的。 当您必须取平均值的最小值和最大值时,您需要存储插入的元素或处理每个输入(对于时间复杂度,这将是最好的方法)。 下面我修改了你的代码,我enter code here使用enter code here Java 集合列表来存储输入,对它们进行排序并获取数据。 排序后首先将我最小,最后将是最大。 Math.min 和 Math.max 仅适用于比较 2 个数字,而不是未定义的列表。 我再说一遍,最好的解决方案是,如果您在输入时检查数字是最小值还是最大值。 由于您是 Java 新手,您可以自己尝试一下。

import java.util.*;

public class ZahlenStatistik
{
    public static void main (String[] args)
    {
        // Variables
        Scanner input = new Scanner(System.in);
        int number1;
        List<Integer> numbers = new ArrayList<Integer>(); // change it to list
        double averageValue;
        int sum= 0;

        // Input
        System.out.println("\n\n####################################################################");
        System.out.print("\n Bitte geben Sie eine Zahl ein: ");
        number1 = input.nextInt();
        System.out.print(" Bitte geben Sie " + number1 +" Zahlen ein: ");

        //Define the number of times loop goes
        for (int count = 0; count < number1; count ++)
        {
            numbers.add(input.nextInt());
        }

        for(Integer number:numbers)
        {
            sum = sum + number;
        }

        averageValue = sum / number1;
        Collections.sort(numbers);
        // Output
        System.out.println("\n Die größte Zahl ist: " + numbers.get(numbers.size()-1));
        System.out.println("\n Die kleinste Zahl ist: " + numbers.get(0));
        System.out.print("\n Der averageValue betr\u00e4gt: " + averageValue);

    }
}
import java.util.Scanner;

public class SumOf2 
{

    public static void main(String[] args) 
    {
        Scanner s = new Scanner(System.in);
        System.out.println("Enter 2 integer values");
        int m = s.nextInt();
        int n = s.nextInt();
        int sum=0;
        int count=0;
        for(int i=m ; i<=n ; i++)
        {
            if(count < n)
            {
                sum=sum+i;
                count++;
            }
        }
        System.out.println("Sum of two numbers is: "+sum);
        System.out.println("Count between 2 numbers is : "+count);
        

    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM