[英]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.