【问题标题】:Count numbers in a "for loop" and give back average, min, max value in java在“for循环”中计算数字并在java中返回平均值、最小值、最大值
【发布时间】:2017-04-23 11:37:30
【问题描述】:

用户应输入数字“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”来随机计数。

【问题讨论】:

  • 欢迎来到 Stack Overflow!看起来你可能正在寻求家庭作业帮助。虽然我们对此本身没有任何问题,但请注意这些dos and don'ts,并相应地编辑您的问题。 (即使这不是家庭作业,也请考虑建议。)
  • @RC 不完全重复,这里的问题是他从第一个数字开始就没有保存任何东西
  • 请不要通过投反对票来打击新人的积极性。
  • @AyoubFalah 我决定是否赞成或反对是基于问题的质量和提问者为使其成为一个好的问题所付出的努力。他们是否是新用户无关紧要。

标签: java


【解决方案1】:

问题出在这里:

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

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

您需要做的是将此语句移动 for 循环中,以使您的想法生效。

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

【讨论】:

    【解决方案2】:

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

    程序流程将是:

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

    【讨论】:

      【解决方案3】:

      首先,您的代码在逻辑上是正确的。当你必须取平均值的最小值和最大值时,你需要存储插入的元素或处理每个输入(对于时间复杂度,这将是最好的方法)。 下面我修改了你的代码,我使用enter code hereJava Collections List 来存储输入,对它们进行排序并获取数据。 排序后首先将我最小,最后将是最大。 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);
      
          }
      }
      

      【讨论】:

        【解决方案4】:

        我可以看到的一些错误

        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,您可以在 for 循环中计算 sum int sum = Arrays.stream(numbers).reduce(0, (x, y) -&gt; x + y);

        .

        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);
        
            }
        }
        

        【讨论】:

          【解决方案5】:
          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);
                  
          
              }
          
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-11-04
            • 2021-01-25
            • 1970-01-01
            • 1970-01-01
            • 2016-09-15
            • 1970-01-01
            相关资源
            最近更新 更多