java - 我不明白为什么我的计算不起作用
问题描述
我对编程很陌生。这是 carHire 类。两者中的一个。我需要开发一个基于 GUI 的汽车租赁应用程序。因此,当我进行条目时,一切似乎都运行良好,但我的租金仍然是 0。我想不通。
`公共类租车{
private String customerName;
private String licenseNumber;
private int daysHired;
CarHire(){
customerName=null;
licenseNumber=null;
daysHired=0;
}
CarHire(String customerName, String licenseNumber, int daysHired){
this.customerName = customerName;
this.licenseNumber = licenseNumber;
this.daysHired = daysHired;
}
public void setCustomerName(String customerName){
this.customerName = customerName;
}
public void setLicenseNumber(String licenseNumber){
this.licenseNumber = licenseNumber;
}
public void setDaysHired(int daysHired){
this.daysHired = daysHired;
}
public String getCustomerName()
{
return customerName;
}
public String getLicenseNumber()
{
return licenseNumber;
}
public int getDaysHired()
{
return daysHired;
}
public double calculateHireRental(){
final double BASE_RATE = 34.5;
final double NEXT_TIER_RATE = 30.5;
final double LAST_TIER_RATE = 22.5;
final int NEXT_TIER_START_DAY=4;
final int LAST_TIER_START_DAY=7;
double rental= 0.0;
int days = 0;
if(days<NEXT_TIER_START_DAY){
rental=days*BASE_RATE;
}
else if(days<=LAST_TIER_START_DAY){
rental=3*BASE_RATE+(days-3)*NEXT_TIER_RATE;
}
else{
rental=3*BASE_RATE+4*NEXT_TIER_RATE+(days-7)*LAST_TIER_RATE;
}
return rental;
}
}`
以下是 GUI 类。
//处理输入数据
`public void enterData()
{
if (nameField.getText().compareTo("") == 0)
{
JOptionPane.showMessageDialog(null,"You must enter a customer name","XYZ Car Hire App",JOptionPane.ERROR_MESSAGE);
return;
}
if (licenseField.getText().compareTo("") == 0)
{
JOptionPane.showMessageDialog(null,"You must enter a license number","XYZ Car Hire App",JOptionPane.ERROR_MESSAGE);
return;
}
if (daysField.getText().compareTo("") == 0)
{
JOptionPane.showMessageDialog(null,"You must enter days hired","XYZ Car Hire App",JOptionPane.ERROR_MESSAGE);
return;
}
//if (currentCustomer == MAX_NUM)
String customerName = nameField.getText();
String licenseNumber = licenseField.getText();
int daysHired = Integer.parseInt(daysField.getText());
displayHeading();
CarHire g = new CarHire(customerName,licenseNumber,daysHired);
carHireArray[currentCustomer] = g;
textArea.append(String.format("%-25s%-28s%-32s$%3.2f\n",customerName, licenseNumber, daysHired, g.calculateHireRental()));
if (enterButton.isEnabled())//todo-- clear textfields and return focus
{
nameField.setText("");
nameField.requestFocus();
licenseField.setText("");
licenseField.requestFocus();
daysField.setText("");
daysField.requestFocus();
}
currentCustomer++;//todo-- incremental current cusomer number
}
// Display all bookings
public void displayAll()
{
textArea.setText("");
displayHeading();
//todo-- call displayHeading() method
for(int i=0;i<MAX_NUM;i++)
{
CarHire listCustomer = carHireArray[i];
textArea.append(String.format("%-25s%-22s%-28s$%3.2f\n",listCustomer.getCustomerName(), listCustomer.getLicenseNumber(), listCustomer.getDaysHired(), listCustomer.calculateHireRental()));
}//todo-- display all entries entered so far (need using a loop)
//todo-- display number of entries, average days hired, total rental
if (nameField.getText().compareTo("") == 0)
{
JOptionPane.showMessageDialog(null,"No customer entered","XYZ Car Hire App",JOptionPane.ERROR_MESSAGE);
}//todo-- complete error message
}`
解决方案
在calculateHireRental()
你有int days = 0;
,所以第一个if
是真的,你返回days * BASE_RATE
是0
。
删除days
变量并改用类成员daysHired
。
推荐阅读
- r - 运行 if 语句将字符创建为因子
- xml - XSL 转换:根据当前节点属性值选择 XPath 属性值
- python - Python如何检查线程是否已经启动
- spring-boot - 我们如何使用 Spring Boot 和 Angular 在 UI 中显示 LOGS
- google-chrome - 通过组策略设置谷歌浏览器显示语言
- ionic-framework - ionic:阻止具有“ionic://”来源的框架访问跨域框架
- android - Android通知广播接收器不工作
- reactjs - 为什么所有反应组件都会改变高度而不是一个
- javascript - 使用工作表和应用脚本在谷歌文档中批量查找和替换
- ssl - ECS Fargate 上的 kafka 连接映像如何使用 TLS 连接到 MSK 代理?