【问题标题】:Average of an array and associate with name数组的平均值并与名称相关联
【发布时间】:2014-12-08 19:45:40
【问题描述】:

有人知道如何在这个简单的程序中显示参与者的平均比赛时间吗? 将相关的跑步者姓名与时间一起显示也很棒。 我认为我有正确的数组结构并接受了用户输入。 感谢您提供的任何帮助。这是我的代码...

import java.util.Scanner;
 public class RunningProg
 {
    public static void main (String[] args)
    {
    int num;

    Scanner input= new Scanner (System.in);

    System.out.println("Welcome to Running Statistical Analysis Application");
    System.out.println("******************************************************************* \n");

    System.out.println("Please input number of participants (2 to 10)");

    num=input.nextInt();

    // If the user enters an invalid number... display error message... 
    while(num<2|| num >10)
    {
    System.out.println("Error invalid input! Try again! \nPlease input a valid number of participants (2-10)...");

        num=input.nextInt();
    }

    // declare arrays
    double resultArray [] = new double [num]; // create result array with new operator
    String nameArray [] = new String [num];// create name array with new operator
    // Using the num int will ensure that the array holds the number of elements inputed by user

      // loop to take in user input for both arrays (name and result)
    for (int i = 0 ; i < nameArray.length ; i++)
        {
            System.out.println ("Please enter a race participant Name for runner " + (i+1) );
            nameArray[i] = input.next();

            System.out.println ("Please enter a race result (time between 0.00 and 10.00) for runner " + (i+1) );
            resultArray[i] = input.nextDouble();
        }

【问题讨论】:

  • 不确定你在问什么。你是在问数学是找到一堆数字的平均值吗?或者如何在 Java 中将数字相加?或者如何在 Java 中除数?
  • 我知道它背后的数学原理,但即使我有一个基于它的示例,我也在努力使用 java 语法
  • 嗯,您首先需要的是某种变量来存储您目前输入的总次数。您需要在循环开始之前声明并将其设置为零。然后,当用户输入每个数字时,您需要将其添加到运行总数中。你为什么不试一试呢?然后当您遇到困难时,通过将其附加到问题中,向我们展示您尝试过的代码;然后我们可以帮助您克服下一个障碍。
  • 嗨,大卫。感谢您的帮助和鼓励!我认为我的名为 num 的变量存储了参与者的数量(它是程序开始时的用户输入)。为清楚起见,这仅基于一场比赛
  • 当然,但除了num,您还需要一个变量来表示总时间。也许floatdouble 类型的变量是合适的。然后随着用户键入时间,您将它们添加到您的变量中。

标签: java arrays average


【解决方案1】:

这似乎是一个家庭作业问题,所以这里是你如何解决你的问题,伪代码

参与者的总平均比赛时间是通过将所有结果相加并除以结果数量来计算的:

sum = 0
for i = 0 to results.length      // sum up all the results in a loop
    sum = sum + results[i]          
average = sum / results.length   // divide the sum by the amount of results to get the average

在读取用户输入并存储跑步者的姓名和结果时执行求和会更好。原因是它会更高效(不需要第二个循环来执行求和)并且代码会更简洁(它会更少)。

可以通过遍历保存名称和结果并在相应索引处打印值的两个数组来显示跑步者的时间:

for i = 0 to results.length
    print "Runner: " + names[i] + " Time: " + results[i]

之所以有效,是因为您拥有相同数量的结果和名称 (results.length == names.length),否则您最终会遇到 ArrayIndexOutOfBounds 异常。


另一种方法是利用 Java 的面向对象特性并创建一个名为 Runner 的对象:

class Runner {
    String name;
    double result;
    Runner(String n, double r) {
        result = r;
        name = n;
    }
}

然后使用一个数组来存储这些跑步者:

Runner[] runners = new Runner[num];
for (int i = 0 ; i < num ; i++) {
    System.out.println ("Please enter a race participant Name for runner " + (i+1) );
    String name = input.next();
    System.out.println ("Please enter a race result (time between 0.00 and 10.00) for runner " + (i+1) );
    double result = input.nextDouble();
    runners[i] = new Runner(name, result);
}

然后您可以遍历跑步者数组并打印名称和结果...这是此的伪代码:

for i = 0 to runners.length
    print runners[i].name + " " + runners[i].result

【讨论】:

  • 我已经回答了您的两个问题,但您已经掌握了这些信息?那你为什么在这里问问题? :) 把这个伪代码翻译成Java 语法很简单
  • 没问题,如果您需要进一步帮助,请告诉我
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-07
  • 2022-07-15
  • 1970-01-01
  • 1970-01-01
  • 2012-02-05
  • 1970-01-01
相关资源
最近更新 更多