计算返回0.0

时间:2020-09-19 01:00:15

标签: java

我在为Java类分配作业时遇到一些问题。我对numCredits * creditFee + addFee的计算未处理;它继续返回0.0

作业:

Assignment Screenshot

(注意,我尚未添加作业的其他部分,即向RegistrationTester添加和减少3个学时。一旦发现此问题,我将添加这些部分。)

这是我的代码:

public class Registration {
    //attributes
private String firstName = ""; 
private String lastName = "";
private double numCredits = 0;
private double addFee = 0;
private double creditFee = 70;
public double balance = 0;

//constructor
public Registration(String firstName, String lastName, double numCredits, double addFee){
    this.firstName = firstName;
    this.lastName = lastName;
    this.numCredits = numCredits;
    this.addFee = addFee;
}

public Registration(){} //
 public void balance(double balance){
   System.out.println(numCredits * creditFee + addFee);
 }
   public void addCredit(double addCredit){
   if (this.balance > 0) {
   this.balance = balance + addCredit * creditFee;
   }
   }
   
   public void subCredit(double subCredit){
   if (this.balance > 0){
   this.balance = balance - (subCredit * creditFee);
   }
   }
//setters
public void setFirstName(String fname){
    this.firstName = fname;
}
public void setLastName(String lname){
    this.lastName = lname;
}
public void setNumCredits(double credits){
    this.numCredits = credits;
   }
   public void setAddFee(double fee){
   this.addFee = fee;
   }
   public void setcreditFee(double creditFee){
   this.creditFee = 70;
   }
   public void setBalance(double balance){
   this.balance = balance;
   }
   
    //getters
   
   public String getFirstName(){
   return this.firstName;
   }
   public String getLastName(){
       return this.lastName;
   }
   public double getNumCredits(){
   return this.numCredits;
   }
   public double getAddFee(){
   return this.addFee;
   }
   public double getCreditFee(){
   return this.creditFee;
   }
  public double getBalance(){
      return this.balance;
  }
   
}

public class RegistrationTester {
    public static void main(String[] args){
    Registration student1 = new Registration ("Mihail", "Dichev", 15, 60);
    Registration student2 = new Registration ("Dene", "Logan", 12, 45);
    
    //display students and their current stats
    
    System.out.printf("%s %s:%n Current Credit Hours: %f%n Additional Fees: $%.2f%n"
            + "Current balance due: $ %.2f%n", 
            student1.getFirstName(),student1.getLastName(), student1.getNumCredits(), student1.getAddFee(),
            student1.getBalance());
    System.out.printf("%s %s:%n Current Credit Hours: %f%n Additional Fees: $%.2f%n"
            + "Current balance due: $ %.2f%n", 
            student2.getFirstName(), student2.getLastName(), student2.getNumCredits(), student2.getAddFee(),
            student2.getBalance());        
        
}
}

1 个答案:

答案 0 :(得分:0)

方法1:正确设置余额

余额始终返回0.0,因为您从未在方法中设置余额。

我相信您的结余方法应为:

 public void balance(double balance){
   this.balance=(numCredits * creditFee + addFee);
 }

方法2:归还余额

您可以用student1.getBalance()替换RegistrationTest.java中的student1.balance(),并返回一个双精度值。

RegistrationTest应该是:

System.out.printf("%s %s:%n Current Credit Hours: %f%n Additional Fees: $%.2f%n"
        + "Current balance due: $ %.2f%n", 
        student1.getFirstName(),student1.getLastName(), student1.getNumCredits(), student1.getAddFee(),
        student1.balance());

方法 balance()应该为:

 public double balance(){
   return (numCredits * creditFee + addFee);
 }

通过这些更改,它输出:

Mihail Dichev:
 Current Credit Hours: 15.000000
 Additional Fees: $60.00
Current balance due: $ 1110.00
Dene Logan:
 Current Credit Hours: 12.000000
 Additional Fees: $45.00
Current balance due: $ 885.00