Java-Setters和继承-为什么我的dailyFee参数设置不正确?
大家晚上好 作业越来越混乱了!再次强调,不要要求一个直截了当的答案,而是一个指向正确方向的指针,这样任何帮助都会得到感谢 编辑2:下面是有问题的练习,如果它有助于澄清任何问题: 我想知道如何使用UseCarRental.java文件在CarRental.java文件中设置dailyFee变量。java中的if语句似乎工作不正常(输入size没有设置dailyFee变量)。此外,如果输入“l”作为大小,则不会提示输入LuxuryCarRental.java。代码如下: CarRental.javaJava-Setters和继承-为什么我的dailyFee参数设置不正确?,java,Java,大家晚上好 作业越来越混乱了!再次强调,不要要求一个直截了当的答案,而是一个指向正确方向的指针,这样任何帮助都会得到感谢 编辑2:下面是有问题的练习,如果它有助于澄清任何问题: 我想知道如何使用UseCarRental.java文件在CarRental.java文件中设置dailyFee变量。java中的if语句似乎工作不正常(输入size没有设置dailyFee变量)。此外,如果输入“l”作为大小,则不会提示输入LuxuryCarRental.java。代码如下: CarRental.jav
import javax.swing.JOptionPane;
public class CarRental
{
private String name;
private String zipCode;
private String size;
private double dailyFee;
private int rentalDays;
private double totalFee;
public CarRental(String name, String zipCode, String size, double dailyFee, int rentalDays, double totalFee)
{
this.name = name;
this.zipCode = zipCode;
this.size = size;
if (size == "e")
{
this.dailyFee = 29.99;
}
else if (size == "m")
{
this.dailyFee = 38.99;
}
else if (size == "f")
{
this.dailyFee = 43.50;
}
this.dailyFee = dailyFee;
this.rentalDays = rentalDays;
totalFee = dailyFee * rentalDays;
}
public CarRental(){}
public void display()
{
JOptionPane.showMessageDialog(null, "Luxury car for " + name + " from zip code " + zipCode + "\n"
+ "Type = " + size + "\n"
+ "Daily Fee = " + dailyFee + "\n"
+ "Days = " + rentalDays + "\n"
+ "Your rental is $" + totalFee);
}
//includes getters and setters but I didn't include them in this post
import javax.swing.JOptionPane;
public class LuxuryCarRental extends CarRental
{
public LuxuryCarRental(String name, String zipCode, String size, double dailyFee, int rentalDays, double totalFee, String includeChauffeur)
{
super(name, zipCode, size, dailyFee, rentalDays, totalFee);
if (size == "l")
{
dailyFee = 79.99;
includeChauffeur = JOptionPane.showInputDialog(null, "Include chauffeur? Y/N");
if (includeChauffeur == "Y")
{
totalFee = totalFee + 200;
}
}
}
}
LuxuryCarRental.java
import javax.swing.JOptionPane;
public class CarRental
{
private String name;
private String zipCode;
private String size;
private double dailyFee;
private int rentalDays;
private double totalFee;
public CarRental(String name, String zipCode, String size, double dailyFee, int rentalDays, double totalFee)
{
this.name = name;
this.zipCode = zipCode;
this.size = size;
if (size == "e")
{
this.dailyFee = 29.99;
}
else if (size == "m")
{
this.dailyFee = 38.99;
}
else if (size == "f")
{
this.dailyFee = 43.50;
}
this.dailyFee = dailyFee;
this.rentalDays = rentalDays;
totalFee = dailyFee * rentalDays;
}
public CarRental(){}
public void display()
{
JOptionPane.showMessageDialog(null, "Luxury car for " + name + " from zip code " + zipCode + "\n"
+ "Type = " + size + "\n"
+ "Daily Fee = " + dailyFee + "\n"
+ "Days = " + rentalDays + "\n"
+ "Your rental is $" + totalFee);
}
//includes getters and setters but I didn't include them in this post
import javax.swing.JOptionPane;
public class LuxuryCarRental extends CarRental
{
public LuxuryCarRental(String name, String zipCode, String size, double dailyFee, int rentalDays, double totalFee, String includeChauffeur)
{
super(name, zipCode, size, dailyFee, rentalDays, totalFee);
if (size == "l")
{
dailyFee = 79.99;
includeChauffeur = JOptionPane.showInputDialog(null, "Include chauffeur? Y/N");
if (includeChauffeur == "Y")
{
totalFee = totalFee + 200;
}
}
}
}
UseCarRental.java(不完整)
如您所见,我完全不知道如何使用UseCarRental.java中的setDailyFee来设置dailyFee变量,这是进行totalFee计算所需的
编辑:被要求解释为什么这不是一个重复的问题。我修复了字符串比较问题(这里还没有更新),但核心问题仍然是setter和继承
编辑3:我想本世纪的问题(为了清楚起见)是:我如何设置每日费用的价值?我认为一旦输入了大小,它将由CarRental.java中的if语句设置?您在这里遇到了一些问题:
- 在
构造函数中,您根据CarRental
大小设置
,然后用参数值覆盖它。您应该删除该参数,或者在构造函数中没有该逻辑this.dailyFee
字段是dailyFee
的私有字段,这意味着在CarRental
中无法直接访问该字段LuxuryCarRental
应该使用LuxuryCarRental
this.setDailyFee()
- 在构造函数中放置对话框之类的交互是不好的代码。它将用于此任务,但不要在实际代码中使用它。将接口和数据类分开
- 你似乎误解了遗产是如何运作的。您可以在
中创建main
对象,但用于处理CarRental
的代码仅存在于l
中。您需要无条件地创建一个LuxuryCarRental
(您仍然可以将其分配给LuxuryCarRental
变量),或者输入租赁类型,并根据租赁类型创建一个CarRental
或CarRental
。请注意,LuxuryCarRental
有一个默认(无参数)构造函数,而CarRental
没有LuxuryCarRental
main
方法中,并将它们的值分配给局部变量。在调用新LuxuryCarRental时使用这些值(姓名、zipCode、尺码、租金日,包括司机)(请注意,dailyFee
是根据size
计算的,totalFee
是根据日费、天数和司机计算的)。不要将totalFee
作为CarRental
上的变量,而是将getTotalFee()
作为调用时执行计算的方法,因为只要更改任何其他参数,费用都会更改
(尽可能了解枚举;
size
首先不应该是字符串。)这是一个导致问题,但不是核心问题。使用CarRental userInfo=new LuxuryCarRental()代码>而不是CarRental userInfo=new CarRental()代码>如果(size.equals(“e”)对我也不起作用。@BilalShah我还需要添加其他内容吗?仍然像以前一样工作。恐怕我不太明白。我应该把dailyFee逻辑放在哪里?我需要根据它的大小来确定。为什么逻辑一开始就不起作用?