2016-05-17 4 views
-3

Я работаю над проектом на Java, который запрашивает информацию о входных данных пользователя, такую ​​как имя, идентификатор, оценка в массиве. Мне нужно помочь рассчитать средний класс, который вводит пользователь, и как узнать, кто имеет самый высокий Гол. Вот мой код:Вычислить среднее значение в массиве

package finalproject; 

import java.util.Scanner; 

public class FinalProject { 

    /** 
    * @param args 
    *   the command line arguments 
    */ 

    public static void main(String[] args) { 

     Scanner input = new Scanner(System.in); 
     Cis84[] student = new Cis84[50]; 

     int option; 

     for (int c = 0; c < 50; c++) 
      student[c] = new Cis84(); 

     do { 
      System.out.print(""); 
      System.out.println("1) Add Information"); 
      System.out.println("2) Show report"); 
      System.out.println("3) Exit"); 
      System.out.print("\nEnter option: "); 

      option = input.nextInt(); 

      switch (option) { 
      case 1: 
       String n; 

       double g; 
       int index, 
       i; 

       System.out.println("Which position of the student?"); 
       index = input.nextInt(); 

       System.out.println("What is the student's name:"); 
       n = input.nextLine(); 
       n = input.nextLine(); 

       System.out.println("What is student's Id"); 
       i = input.nextInt(); 

       System.out.println("What is student's score"); 
       g = input.nextDouble(); 

       student[index].setName(n); 
       student[index].setGrade(g); 
       student[index].setId(i); 
       break; 

      case 2: 
       for (int c = 0; c < 50; c++) 
        System.out.println(student[c]); 
       break; 
      case 3: 
       System.out.println("You are done"); 
       break; 
      default: 
       System.out.println("Try again"); 
       break; 
      } 

     } while (option != 3); 

    } 
} 

и класс

package finalproject; 

public class Cis84 { 
    private String name; 
    private int id; 
    private double grade; 

    public Cis84() { 
     name = "not input yet"; 
     id = 00000; 
     grade = 0.0; 
    } 

    public Cis84(String n, int i, double g) { 
     name = n; 
     id = i; 
     grade = g; 
    } 

    public void setName(String n) { 
     name = n; 
    } 

    public void setId(int i) { 
     id = i; 
    } 

    public void setGrade(double g) { 
     grade = g; 
    } 

    public String getName() { 
     return name; 
    } 

    public int getId() { 
     return id; 
    } 

    public double getGrade() { 
     return grade; 
    } 

    public String toString() { 
     return String.format("%s\n%d\n%.2f\n", name, id, grade); 
    } 
} 
+0

И вопрос? – shmosel

+0

очевидно, как рассчитать среднее значение от массивов – sbowde4

ответ

0

расчета в среднем будет что-то вроде кода ниже. Помните, что в среднем это сумма всех значений делится на общее число значений

double sum = 0, divisor = 0; 
    for (int k = 0; k < student.length; k++){ 
     sum += student[k].getGrade();//add up all the grades 
     divisor = k;//get the number of total items 
     } 
    return sum/divisor; //divide 
+1

не должно быть итоговым студентом.length ??? – Elltz

+0

да, но это пример – sbowde4

2

Это домашнее задание, ясно, и я не чувствую себя комфортно давая вам прямой ответ. Однако то, что вам нужно будет сделать, - это когда нужно отображать средние значения, пройти весь массив students и суммировать оценки, а затем разделить на размер массива, вероятно, используя цикл for. Вы можете отслеживать размер массива, увеличивая счетчик в любое время, когда вызывается вариант 1 коммутационного футляра.

Чтобы найти наивысший балл, вы должны использовать средний расчет для цикла, упомянутый выше, и проверить оценку по сравнению с предыдущим высшим классом. Запишите индекс того, что имеет наивысший класс и распечатайте его.

Имейте некоторые псевдокоды!

for(size of array which isn't NULL){ 
    add indexed grade to sum; 
    check to see if this index has the highest grade; 
} 

display (sum/size); //the average 
display highest grade; 
+0

Я пытаюсь выполнить код, чтобы найти самое высокое значение, но всегда получаю сообщение об ошибке NullPointerException. thanks – vincephng

+0

Мой код: double max; max = student [0] .getGrade(); для (int m = 0; m max) { max = student [m]. getGrade(); } } – vincephng

+0

Это может быть неправильно, но вместо 'if (student [m]! = Null' try' if (student [m] .getGrade()! = Null " –

0
private static double calculateAverage(Cis84[] students) { 

    double sum = 0; 

    for (Cis84 student : students) { 
     sum += student.getGrade(); 
    } 

    return sum/students.length; 
} 

private static double calculateHighestScore(Cis84[] students) { 

    double highestScore = 0; 

    for (Cis84 student : students) { 
     if (student.getGrade() > highestScore) { 
      highestScore = student.getGrade(); 
     } 
    } 

    return highestScore; 
} 

Затем, чтобы показать информацию:

case 2: 
     System.out.println("Average:"); 
     System.out.println(calculateAverage(student)); 
     System.out.println("Highest score:"); 
     System.out.println(calculateHighestScore(student)); 
Смежные вопросы