我在为Java类分配作业时遇到一些问题。我对numCredits * creditFee + addFee的计算未处理;它继续返回0.0
作业:
(注意,我尚未添加作业的其他部分,即向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());
}
}
答案 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