2016-12-27 2 views
1

Mein Vater und ich haben es auf das Objekt beschränkt. Die Daten können nicht gespeichert werden. Außerdem bin ich neu in Java. Der Code soll in der Konsole den Vornamen, den Nachnamen, die Note und den Notendurchschnitt ausgeben. Ich denke, das Problem ist in der Öffentlichkeit doppelt getCalcGraeAverage() aber korrigieren Sie mich, wenn Sie falsch, bitte.Java - Objekt kann keine Daten speichern

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

Können Sie den Code für Ihre 'Student' Klasse auf die Frage hinzufügen? – Mshnik

+0

Machst du irgendetwas mit 'totalAssignments' und' totalpoints' überhaupt? – GurV

+0

Ich bin mir nicht sicher, fügte auch den Code hinzu. – prototype0628

Antwort

1

In Ihrem Code Sie sind:

  1. Schaffung eines Student student1 Objekt
  2. Lesen totalAssignments, totalpoints von System.in
  3. student1.getCalcGradeAverage() Aufruf

zwischen den Schritten 2 und 3 Sie haben um die Felder 012 zu setzen, totalpoints von student zu den Werten, die Sie gelesen haben, oder sie behalten ihre Standardwerte von Null bei. Z.B.

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

, auch da totalAssignments ist vom Typ int, möchten Sie wahrscheinlich als lesen:

int totalAssignments = input.nextInt(); 
+0

Okay, ich habe TotalAssignments und TotalPoints in int geändert, aber jetzt versuche ich es auszuführen und lese java.lang.ArithmeticException:/durch Null. Also bedeutet das, dass, wie Sie sagten, die Werte im Nullwert bleiben? Wenn ja, was mache ich, um das zu beheben? – prototype0628

+0

Danke. Also meinst du, dass ich die Variablen totalAssignments auf double und totalpoints auf int des Schülers aktualisieren soll. – prototype0628

+0

Danke. Also meinst du, dass ich die Variablen totalAssignments auf double und totalpoints auf int des Schülers aktualisieren soll. Darüber hinaus wäre das durchschnittliche Rating int? – prototype0628

0

Wenn Ihr Code schreiben, Sie Variablen für die Schüler der Klasse mit Klassenbereich erklären.

int totalAssignments; 
double totalPoints; 

diejenigen Klassenbereich variabel sind in dem Verfahren verwendet: getCalcGradeAverage() totalAssignments von Studenten und totalPoints der Schüler werden in diesem Verfahren verwendet

Wenn Sie einen neuen Studenten jene Variable sind schaffen gleich Null, weil nicht von einem Wert in Ihrem Konstruktor betroffen.

im Hauptmethode, wenn Sie schreibt:

Double totalAssignments = 

Sie eine neue Variable mit dem Namen „totalAssignments“ mit einer Methode deklarieren scope.When das Verfahren endet, die variable Referenz geht weg, und es gibt keinen Weg, um Zugang diese Variable nicht mehr. Sie können davon ausgehen, dass die Variable Decalred nicht die gleiche ist wie die Student-Variable: student.totalAssignments ist immer gleich Null, weil kein Wert für ihn betroffen ist.

unter der Annahme, dann, dass Sie das tun können:

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