2014-12-08 3 views
0

Кто-нибудь знает, как отображать среднее время гонки для участников этой простой программы? Было бы также полезно отобразить имя связанного бегунов со временем. Я думаю, что у меня есть структура массивов правильно и взята во вход пользователя. Спасибо за любую помощь, которую вы можете предоставить. Вот мой код ...Среднее значение массива и ассоциировать с именем

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(); 
     } 
+0

Не уверен, что вы просите. Вы спрашиваете, что математика должна найти среднее число кучей чисел? Или как добавить числа вместе в Java? Или как разделить числа на Java? –

+0

Я знаю математику позади нее, но я борюсь с синтаксисом java, хотя у меня есть пример, чтобы основать его на – CassyHiggins

+1

Ну, первое, что вам понадобится, - это какая-то переменная для хранения всего время, которое вы ввели до сих пор. Вам нужно будет объявить об этом и установить его в ноль до начала цикла. Затем, когда пользователь вводит каждый номер, вы хотите добавить его в текущую сумму. Почему бы вам не попробовать? затем, когда вы застряли, покажите нам код, который вы пробовали, добавив его к вопросу; и тогда мы сможем помочь вам преодолеть следующий барьер. –

ответ

0

Это похоже на проблемы в выполнении домашних заданий, так вот как вы можете решить ваши проблемы, в псевдокоде:

Общее среднее время гонки для участников рассчитывается путем суммирования все результаты и деления на количество результатов:

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 
+0

Спасибо за вашу помощь, но у меня уже есть эта информация – CassyHiggins

+0

Я дал вам ответы на ваши два вопроса, но у вас уже есть эта информация?Тогда почему вы задаете здесь вопрос? :) Это довольно тривиально, чтобы перевести этот псевдокод на синтаксис 'Java' – nem035

+0

Извините за путаницу. Я снова читаю ваш ответ! – CassyHiggins