2016-12-27 3 views
1

Мой папа и я сузили его до объекта, который не может хранить данные. Кроме того, я новичок в java. Код должен печатать в консоли имя, фамилию, оценку и средний класс. Я думаю, проблема в публичном двойном getCalcGraeAverage(), но исправьте меня, если не так, пожалуйста.Java - объект не может хранить данные

import java.util.Scanner; 
/** 
* Write a description of class Student here. 
* 
* @author XXXX 
* @version XXXX 
*/ 
public class Student 
{ 
    String firstName; 
    String lastName; 
    int gradeLevel; 
    double gradeAverage; 
    int totalAssignments; 
    double totalPoints; 

     /** 
    * Create a new student with student's name, grade, and average 
    */ 
    public Student(String newFirstName, String newLastName, int newGradeLevel, double newGradeAverage) 
    { 
     firstName = newFirstName; 
     lastName = newLastName; 
     gradeLevel = newGradeLevel; 
     gradeAverage = newGradeAverage = 0.0; 
    } 

     /** 
    * Return the student's first name. 
    */ 
    public String getFirstName() 
    { 
     return firstName; 
    } 

     /** 
    * Return the student's last name. 
    */ 
    public String getLastName() 
    { 
     return lastName; 
    } 

     /** 
    * Return the grade level of the student. 
    */ 
    public int getGradeLevel() 
    { 
     return gradeLevel; 
    } 

     /** 
    * Calculates grade average. 
    */ 
    public double getCalcGradeAverage() 
    { 

     double gradeAverage = totalAssignments/totalPoints; 
     return gradeAverage; 
    } 

    public static void main (String[] args) 
    { 
     Student student1 = new Student ("XXXX", "XXXX", 11, 0.0); 

     System.out.println("The student's first name is: " + student1.getFirstName()); 
     System.out.println("The student's last name is: " + student1.getLastName()); 
     System.out.println("The student's grade level is: " + student1.getGradeLevel()); 

     System.out.println("Please enter the total assignment points the student has earned: "); 

     Scanner input = new Scanner(System.in); 
     Double totalAssignments = input.nextDouble(); 

     System.out.println("Please enter the number of assignments given: "); 

     double totalpoints = input.nextDouble(); 

     System.out.println(student1.getFirstName() + " " + student1.getLastName() + " average grade is" + student1.getCalcGradeAverage()); 
    } 
} 
+2

Вы можете добавить код для класса 'Student' на вопрос? – Mshnik

+0

Вы вообще ничего не делаете с 'totalAssignments' и' totalpoints'? – GurV

+0

Я не уверен, также добавил код. – prototype0628

ответ

1

В своем коде вы:

  1. создания Student student1 объекта
  2. чтение totalAssignments, totalpoints из System.in
  3. вызова student1.getCalcGradeAverage()

между шагами 2 и 3 у вас есть установить поля totalAssignments, totalpoints от student до значений, которые вы читаете, или они будут сохранять значения по умолчанию, равные нулю. Например.

student1.totalAssignments = totalAssignments; 
student1.totalpoints = totalpoints; 

Кроме того, поскольку totalAssignments имеет тип int, вы, вероятно, хотите, чтобы прочитать его как:

int totalAssignments = input.nextInt(); 
+0

Хорошо, я изменил TotalAssignments и TotalPoints на int, но теперь я пытаюсь запустить его и читает java.lang.ArithmeticException:/by zero. так значит ли это, что, как вы сказали, значения остаются в нулевом значении? Если да, то что мне делать, чтобы исправить это? – prototype0628

+0

Спасибо. Итак, вы заявляете, что я должен обновить переменные totalAssignments, чтобы удвоить и totalpoints до int ученика. – prototype0628

+0

Спасибо. Итак, вы заявляете, что я должен обновить переменные totalAssignments, чтобы удвоить и totalpoints до int ученика. Кроме того, среднее значение будет int? – prototype0628

0

При написании кода, вы объявляете переменные для класса студентов с классом области.

int totalAssignments; 
double totalPoints; 

тех, переменная сфера класса используются в методе: getCalcGradeAverage() totalAssignments студенческой и totalPoints Студенческого используются в этом методе

При создании нового студента тех переменной равно нулю, так как не зависит от значения в вашем конструкторе.

в основной метод, когда пишет:

Double totalAssignments = 

вы объявляете новую переменную с именем «totalAssignments» с методом scope.When метод завершается, переменная ссылка уходит, и нет никакого способа доступа эта переменная больше. вы можете считать, что переменная, декодированная, не совпадает с переменной-учеником: student.totalAssignments всегда равна нулю, потому что никакое значение не влияет на него.

Тогда при условии, что вы можете сделать это:

student1.totalAssignments = input.nextInt(); 
student1.totalPoints = input.nextDouble(); 
Смежные вопросы