[英]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。 (平均變量是可選的)
程序流程將是:
我可以看到的一些錯誤
System.out.print(" Pls enter " + number1 +" numbers: "); numbers = input.nextInt();
您需要一個循環和數組來讀取和存儲所有元素。
要獲得平均值,您首先需要對數組中的所有元素求和,然后除以數組的長度。
要在數組中查找最小值和最大值,您不能使用Math.min()
和Math.max()
方法,因為這些方法獲取兩個參數並返回最小值/最大值。
你的代碼應該是這樣的
筆記
Arrays.stream(numbers).max().getAsInt();
和Arrays.stream(numbers).min().getAsInt();
使用在數組中查找最大值/最小值的輔助方法。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.