簡體   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