2015-11-08 3 views
0

сейчас я работаю над программой, которая печатает имя студента, идентификационный номер, баллы на экзаменах, средний балл и оценку. По какой-то причине существует проблема с методом, который вычисляет средний балл. Я попытался добавить скобки, и это тоже не изменило результат. Это в конечном счете испортит оценку, потому что оценка рассчитывается со средней оценкой. Любая помощь приветствуется, спасибо! Вот мой код:Среднее вычисление в классе

import java.util.Scanner; 

    public class Student { 
    private String fname; 
    private String lname; 
    private int id; 
    private int score1; 
    private int score2; 
    private int score3; 
    private double average; 
    private String grade; 

    public void readInfo() 
    { 
     Scanner k = null; 
     k = new Scanner (System.in); 

     System.out.println ("Please enter the first name: (Enter John as first name and Doe as last name to stop) "); 
     fname = k.next(); 
     System.out.println("Please enter the last name: "); 
     lname = k.next(); 
     if (fname.equalsIgnoreCase("John")&&lname.equalsIgnoreCase("Doe")) 
      System.exit(0); 
     System.out.println("Please enter the student ID: "); 
     id = k.nextInt(); 
     System.out.println("Please enter the first score: "); 
     score1 = k.nextInt(); 
     System.out.println("Please enter the second score: "); 
     score2 = k.nextInt(); 
     System.out.println("Please enter the third score: "); 
     score3 = k.nextInt(); 
    } 

//The problem lies in here: 

    private void computeAverage() 
    { 
     average = score1+score2+score3/3.0; 

    } 
    private void computeGrade() 
    { 
     if (average>=90&&average<=100) 
      grade = "A"; 
     else if (average>=80&&average<=89.9) 
      grade = "B"; 
     else if (average>=70&&average<=79.9) 
      grade = "C"; 
     else if (average>=60&&average<=69.9) 
      grade = "D"; 
     else 
      grade = "F"; 
    } 

    private String getName() 
    { 
     return fname + " " + lname; 
    } 
    private double getAverage() 
    { 
     return average; 
    } 
    public void printAll() 
    { 
     System.out.printf("%-9s%-10s %-9s %-3s %-3s %-3s %-5s %-5s", "LastName","FirstName","ID","S1","S2","S3","AVG","GRADE"); 
     System.out.println(); 
     System.out.println("-----------------------------------------------------"); 
     System.out.printf("%-9s%-9s %-9d %-3d %-3d %-3d %-3.2f%-2s",lname,fname,id,score1,score2,score3,average,grade); 
     System.out.println(); 
     System.out.println("-----------------------------------------------------"); 

    } 

    } 
+0

«Я попытался добавить скобки и это не изменило результат» <- где? – fge

+1

Вокруг (оценка 1 + оценка2 + оценка3) – homidhomi4

+0

'(double) (оценка 1 + оценка2 + оценка3)/(3.0)' – 3kings

ответ

1
  • Я думаю, проблема в том, что, вы не инициализируетесь переменной средней в любом месте.
  • Хотя, у вас есть метод computeAverage(). Его не вызывали нигде в программе. Возможно, вы также можете сделать это где угодно.
  • И, пожалуйста, укажите скобки, которые, безусловно, приведут к правильному результату.
+0

Вот и все! Я забыл назвать это вне класса в «тестере», – homidhomi4

0

Порядок действий. Что вы делаете: плюс Фактор sum3 и 3. Когда вы разделите, вы должны делить на точно то, что вам нужно разделить. Вы должны делать (sum 1+ sum 2+ sum 3)/3

Если вы не хотите делиться на 2, вы также можете умножить на одну половину, что ничего не изменит, но это еще один вариант.

(sum 1+ sum 2+ sum 3)*1/2 

Имейте в виду, что вы хотите разделить. Если это больше, используйте символы группировки!

{Rich} 
Смежные вопросы