2016-12-27 65 views
1

我和我的父亲缩小到对象无法存储数据。另外,我是新来的Java。代码应该在控制台中输出名字,姓氏,年级和年级平均值。我认为这个问题在public 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. System.in
  2. 创建Student student1对象
  3. 阅读totalAssignmentstotalpoints调用student1.getCalcGradeAverage()

步骤2和3中,你之间设置字段totalAssignments,totalpointsstudent为您读取的值,或者它们将保留其默认值为零。例如。

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

而且,由于totalAssignmentsint类型的,你可能想它读成:

int totalAssignments = input.nextInt(); 
+0

好吧,我将TotalAssignments和TotalPoints更改为int,但现在我尝试运行它并读取java.lang.ArithmeticException:/ by零。那么这是否意味着如你所说的那样,这些数值仍处于零值?如果是的话,我该怎么办才能解决这个问题? – prototype0628

+0

谢谢。那么你是否说我应该更新可变参数totalAssignments以将double和totalpoints更新为学生的int。 – prototype0628

+0

谢谢。那么你是否说我应该更新可变参数totalAssignments以将double和totalpoints更新为学生的int。此外,等级平均值是int? – prototype0628

0

当编写代码,声明与类范围的学生类变量。

int totalAssignments; 
double totalPoints; 

那些类范围变量的方法被使用:getCalcGradeAverage()学生的 totalAssignments和学生的totalPoints在这种方法

用来当你创建一个新的学生这些变量都等于零,因为不会受到构造函数中的值的影响。

的主要方法

当你写道:

Double totalAssignments = 

声明命名新变量“totalAssignments”与scope.When的方法结束时,变量引用消失,也没有办法访问的方法该变量不再。 你可以认为变量decalred和student变量不一样:student.totalAssignments总是等于零,因为没有任何值会影响到他。

然后假设你可以这样做:

student1.totalAssignments = input.nextInt(); 
student1.totalPoints = input.nextDouble();