2016-04-05 30 views
1

Toplamlarım güncellenmeyecek. Kodu her çalıştırdığımda gpa 0.0'ı gösterir. Kullanıcı bilgilerinin girildiği zaman not puanlarının güncellenip güncellenmeyeceğini görmek için "gp" yi ekledim. Herhangi bir yardım harika olurdu! Diğer sorunlara baktım ve benimkini çözemedim!Java GPA CALC issue

import javax.swing.JOptionPane; 

public class GUITestClient { 
    public static void main(String[] args) { 

     StudentInfo student = new StudentInfo(); 
     double credits; 
     String name = JOptionPane.showInputDialog("Please enter your name:"); 
     student.setName(name); 
     credits = Double.parseDouble(JOptionPane.showInputDialog("Please enter the credits:")); 
     student.setCredits(credits); 

     String grade = JOptionPane.showInputDialog("Please enter your grade:"); 
     student.setGrade(grade); 

     JOptionPane.showMessageDialog(null, student.displayStudentInformation());   
    } 
} 

public class StudentInfo { 
     private String name; 
     private double totalGradePoints; 
     private double credits; 
     private String grade; 
     private double gpa; 

     public StudentInfo(){ 
      setGrade(null); 
      setCredits(0); 
      setGradePoints(0); 
     } 
     public StudentInfo(double credits, double totalGradePoints, String grade){ 
      setGrade(grade); 
      setCredits(credits); 
      setGradePoints(totalGradePoints); 
     } 

     public String getName() { 
      return name; 
     } 
     public void setName(String name) { 
      this.name = name; 
     } 

     public String getGrade() { 
      return grade; 
     } 
     public void setGrade(String grade) { 
      this.grade = grade; 
     } 
     public double getCredits() { 
      return credits; 
     } 
     public void setCredits(double credits) { 
      this.credits = credits; 
     } 

     public double getGradePoints() { 
      return totalGradePoints; 
     } 
     public void setGradePoints(double totalGradePoints) { 
      this.totalGradePoints = totalGradePoints; 
     } 

     public double getGpa() { 
      return gpa; 
     } 
     public void setGpa(double gpa) { 
      this.gpa = gpa; 
     } 

     public double addClass(double totalGradePoints, String grade){ 
     double gradePoints = 0; 
     if(grade.equals("A")){ 
      gradePoints = 4.0; 
     }else if(grade.equals("B")){ 
      gradePoints = 3.0; 
     } else if(grade.equals("C")){ 
      gradePoints = 2.0; 
     } else if(grade.equals("D")){ 
      gradePoints = 1.0;} 
     totalGradePoints = (totalGradePoints +gradePoints); 

     return getGradePoints(); 
     } 

     public double getGPA(){ 
      this.setGpa(this.getCredits()/this.getGradePoints()); 
      return this.getGpa(); 
     } 

     public String displayStudentInformation(){ 
      String output = ""; 

      output = output + "Name: " + this.getName() + "\n"; 
      output = output + "Total Credits: " + this.getCredits() + "\n"; 
      output = output + "Your grade is: " + this.getGrade() + "\n"; 
      output = output + "Your GPA is: " + this.getGpa() + "\n"; 
      output = output + "Press any key to continue!" + "\n"; 
      output = output + "gp" + totalGradePoints + "\n"; 

      return output; 
     } 
} 
senin addClass yöntemde

cevap

0

Sorun, this.getGradePoints() ile ilgilidir. Bu, bir değerin alıcısı değildir ve öğrencinin aynı nesne örneği için işlevin içindeki değeri ayarlamazsınız. StudentInfo student = new StudentInfo(); Tüm belirleyici değişkenlerinizi, oluşturduğunuz "öğrenci" nesnesine göre ayarlamalısınız. evet, birden sınıf/sınıf girişler için bir döngü olacak

package guitestclient; 

import javax.swing.JOptionPane; 

public class GUITestClient { 
    public static void main(String[] args) { 

     StudentInfo student = new StudentInfo(); 
     double credits; 
     double gradePoints = 0; 
     double gradePointsTot = 0; 
     double gpa = 0; 
     int classCount = 0; 


     String name = JOptionPane.showInputDialog("Please enter your name:"); 
     student.setName(name); 
     do{ 
     credits = Double.parseDouble(JOptionPane.showInputDialog("Please enter the credits:")); 
     student.setCredits(credits); 

     String grade = JOptionPane.showInputDialog("Please enter your grade:"); 
     student.setGrade(grade); 

     //calculates gpa value for grade 
     gradePoints = StudentInfo.addClass(gradePoints, grade); 
     gradePointsTot += gradePoints; 
     classCount++; 
    } while (classCount < 5);  

     //after loop 
     student.setGradePoints(gradePointsTot); 
     gpa = StudentInfo.getGPA(credits, gpa, classCount); 
     student.setGpa(gpa); 


     JOptionPane.showMessageDialog(null, student.displayStudentInformation());   
    } 
} 

class StudentInfo { 
     private String name; 
     private double totalGradePoints; 
     private double credits; 
     private String grade; 
     private double gpa; 

     public StudentInfo(){ 
      setGrade(null); 
      setCredits(0); 
      setGradePoints(0); 
     } 
     public StudentInfo(double credits, double totalGradePoints, String grade){ 
      setGrade(grade); 
      setCredits(credits); 
      setGradePoints(totalGradePoints); 
     } 

     public String getName() { 
      return name; 
     } 
     public void setName(String name) { 
      this.name = name; 
     } 

     public String getGrade() { 
      return grade; 
     } 
     public void setGrade(String grade) { 
      this.grade = grade; 
     } 
     public double getCredits() { 
      return credits; 
     } 
     public void setCredits(double credits) { 
      this.credits = credits; 
     } 

     public double getGradePoints() { 
      return totalGradePoints; 
     } 
     public void setGradePoints(double totalGradePoints) { 
      this.totalGradePoints = totalGradePoints; 
     } 

     public double getGpa() { 
      return gpa; 
     } 
     public void setGpa(double gpa) { 
      this.gpa = gpa; 
     } 

     public static double addClass(double totalGradePoints, String grade){ 
     double gradePoints = 0; 
     if(grade.equals("A")){ 
      gradePoints = 4.0; 
     }else if(grade.equals("B")){ 
      gradePoints = 3.0; 
     } else if(grade.equals("C")){ 
      gradePoints = 2.0; 
     } else if(grade.equals("D")){ 
      gradePoints = 1.0;} 
     totalGradePoints = (totalGradePoints +gradePoints); 

     return totalGradePoints; 
     } 

     public static double getGPA(double totalGradePoints, double credits, double gpa){ 
      gpa = (credits * totalGradePoints)/ credits; 
      return gpa; 
     } 


     public String displayStudentInformation(){ 
      String output = ""; 

      output = output + "Name: " + this.getName() + "\n"; 
      output = output + "Total Credits: " + this.getCredits() + "\n"; 
      output = output + "Your grade is: " + this.getGrade() + "\n"; 
      output = output + "Your GPA is: " + this.getGpa() + "\n"; 
      output = output + "Press any key to continue!" + "\n"; 
      output = output + "gp" + this.getGradePoints() + "\n"; 

      return output;z 
     } 
} 
+0

Sadece şu an size sarılmak istiyorum, koşarak başlamak istiyorum, zıplamak, bacaklarımı etrafına sarmak ve garip olana kadar sarılmak istiyorum. – bobTafft

+0

haha ​​memnun olabilirim, eğer bu soruya cevap verdiyse lütfen kabul edilebilir olarak işaretleyin! :) –

+0

% 100 doğru değildi, ama ihtiyacım olan yere var. İşte tek düzeltme şu: kamusal statik çift getGPA (çift totalGradePoints, çift kredi, çift gpa) { gpa = (kredi * totalGradePoints)/kredi; dönüş gpa; } – bobTafft

-1

, yerel bir değişken olarak totalGradePoints var.

public double addClass(double totalGradePoints, String grade) 

sen yöntem

public double addClass(String grade) 
benziyor böylece Yani bu değişkeni kaldırın. Bunun yerine yerel birinin genel değişken totalGradePoints kullanmalıdır

Ancak addClass yöntemini çağırdığınız herhangi bir yeri göremiyorum.

+0

, ama önce aşağı bir alabilir emin olmak istedim:

bu deneyin. Talimatlarını takip ettim ve hala kullanıcı girdilerine göre güncellenmeyecekler. – bobTafft

0
public double addClass(double totalGradePoints, String grade){ 
    double gradePoints = 0; 
    if(grade.equals("A")){ 
     gradePoints = 4.0; 
    }else if(grade.equals("B")){ 
     gradePoints = 3.0; 
    } else if(grade.equals("C")){ 
     gradePoints = 2.0; 
    } else if(grade.equals("D")){ 
     gradePoints = 1.0;} 

    totalGradePoints = (totalGradePoints +gradePoints); 
} 

Sorun, addClass son ifadesinde. Java addClass ararken geçti neyse değerinin kopya içeren geçiş değer-ile-, burada görünür totalGradePoints yerel değişken olduğu anlamına gelir, addClass yöntemle içindedir. Bu değere yaptığınız güncellemeler, orijinal değişkeni değil sadece yerel kopyayı etkiler.

Yöntem imzasının totalGradePoints parametresine ihtiyacı yoktur. Bu

public double addClass(String grade) { 
    ... 

olmalı ve sınıf üye değişkeni totalGradePoints yerel gradePoints eklemeniz gerekir.

+0

Bunun nasıl görüneceğini anlayacağından emin değilim? "GradePoints?" Için bir get/set – bobTafft