2016-11-18 15 views
-1

Я пытаюсь написать программу, которая принимает номера классов и возвращает класс оценки, а после того, как пользователь вводит -1, он возвращает максимальный класс, минимальный класс и средний класс, который был введен. Прямо сейчас программа возвращает класс письма и нуль для среднего, максимального и минимального.Минимальные, максимальные и средние оценки

import java.util.Scanner; 

public class getLetterGrade { 
    public static void main(String[] args) { 
     int count = getGrades(); 
     int sum = getGrades(); 
     int max = getGrades(); 
     int min = getGrades(); 
     System.out.println("You entered " + count + " students"); 
     System.out.println("Class average =" + sum/count); 
     System.out.println("Maximum =" + max); 
     System.out.println("Minimum ="+ min); 

    } 

    public static int getGrades() { 
     Scanner reader = new Scanner(System.in); { 
     int count = 0; 
     int sum = 0; 
     int min = 100; 
     int max = 0; 

     while(true) { 
      System.out.println("Welcome to the grade calculator. \n Please enter a numeric grade. \n After the last student in the class, enter a grade of -1."); 


      int grade = reader.nextInt(); 



      if (grade >= 90) { 
       System.out.println("That's an A"); 
      } else if (grade >= 80) { 
       System.out.println("That's a B"); 
      } else if (grade >= 70) { 
       System.out.println("That's a C"); 
      } else if (grade >= 60) { 
       System.out.println("That's a D"); 
      } else if (grade >= 0) { 
       System.out.println("That's an F"); 
      } else if (grade == -1) { 
       return count; 
      } 

      if (grade < min){ 
       min = grade; 
      } 
      if (grade > max){ 
       max = grade;} 

      count++; 
      sum += grade; 

     } 
    } 
} 
} 
+6

Я подозреваю, что вы действительно не хотите называть 'getGrades()' 4 раза. Также 'getGrades' ничего не возвращает. Возможно, стоит обратиться за помощью к вашему профессору/ТП. Это довольно фундаментальная нехватка знаний по Java/программированию – CollinD

ответ

0

В вашей основной функции смотрите, как вы пытаетесь получить счет, сумму, максимум и мин. Как может getGrades() дать вам любое из этих значений, если getGrades() возвращает счет только тогда, когда вы получаете -1?

Затем вы также звоните getGrades() четыре раза. Вам нужно попросить пользователя ввести эти 4 раза?

Исправить это, позвонив getGrades() только один раз, затем переместите операторы печати после цикла while в getGrades().

Также измените getGrades() так, чтобы он ничего не возвращал и просто выходил из цикла while, когда пользователь вводит -1.

Как и другие, я умоляю вас поговорить с профессором, ta или что-нибудь, что поможет вам лично объяснить это.

public static void getGrades() { 
    Scanner reader = new Scanner(System.in); 
    int count = 0; 
    int sum = 0; 
    int min = 100; 
    int max = 0; 

    while(true) { 
     System.out.println("Welcome to the grade calculator. \n Please enter a numeric grade. \n After the last student in the class, enter a grade of -1."); 

     int grade = reader.nextInt(); 

     if (grade >= 90) { 
      System.out.println("That's an A"); 
     } else if (grade >= 80) { 
      System.out.println("That's a B"); 
     } else if (grade >= 70) { 
      System.out.println("That's a C"); 
     } else if (grade >= 60) { 
      System.out.println("That's a D"); 
     } else if (grade >= 0) { 
      System.out.println("That's an F"); 
     } else if (grade == -1) { 
      // Exit while loop to finish the rest of the code 
      break; 
     } 

     if (grade < min){ 
      min = grade; 
     } 
     if (grade > max){ 
      max = grade; 
     } 

     count++; 
     sum += grade; 
    } 
    // Moved print statements here, to be just outside the while loop 
    System.out.println("You entered " + count + " students"); 
    System.out.println("Class average =" + sum/count); 
    System.out.println("Maximum =" + max); 
    System.out.println("Minimum ="+ min); 
} 
Смежные вопросы