我有3个课程:Main,AutoHuur,Auto。 Everythign只工作一件事。我似乎无法获得" Prijs"我的Auto.class中的变量显示在我的AutoHuur.class中的toString中。它一直显示为0.这是为什么? (我知道如果它是null,我将它初始化为0,但为什么它是null而不是Auto.class变量prijsPerDag中的值?)谢谢
Main.class:
public class Main{
public static void main(String[] args) {
AutoHuur ah1 = new AutoHuur();
System.out.println("Eerste autohuur:\n" + ah1 + "\n");
Klant k = new Klant("Mijnheer de Vries");
k.setKorting(10.0);
ah1.setHuurder(k);
Auto a1 = new Auto("Peugeot 207", 50.0);
ah1.setGehuurdeAuto(a1);
ah1.setAantalDagen(4);
System.out.println("Eerste autohuur:\n" + ah1 + "\n");
AutoHuur ah2 = new AutoHuur();
Auto a2 = new Auto("Ferrari", 3500.0);
ah2.setGehuurdeAuto(a2);
ah2.setHuurder(k);
ah2.setAantalDagen(1);
System.out.println("Tweede autohuur:\n" + ah2 + "\n");
System.out.println("Gehuurd: " + ah1.getGehuurdeAuto());
System.out.println("Gehuurd: " + ah2.getGehuurdeAuto());
}
}
Autohuur.class:
public class AutoHuur {
private Klant huurder;
private Auto gehuurdeAuto;
private Auto prijs;
private Integer aantalDagen;
public AutoHuur(){
}
public void setHuurder(Klant nwH){
huurder = nwH;
}
public void setGehuurdeAuto(Auto nwGA){
gehuurdeAuto = nwGA;
}
public Auto getGehuurdeAuto(){
return gehuurdeAuto;
}
public Auto getPrijs(){
return prijs;
}
public void setAantalDagen(Integer nwD){
aantalDagen = nwD;
}
public String toString(){
String s = "";
if (gehuurdeAuto == null){
s = s + "er is geen auto bekend\n"; }
else {
s = s + gehuurdeAuto; }
if (huurder == null){
s = s + "er is geen huurder bekend\n"; }
else {
s = s + huurder; }
if (aantalDagen == null){
s = s + "aantal dagen: 0"; }
else {
s = s + "aantal dagen: " + aantalDagen; }
if (prijs == null){
s = s + " en dat kost 0.0"; }
else {
s = s + " en dat kost" + prijs; }
return s;
}
}
Auto.class:
public class Auto {
private String type;
private Double prijsPerDag;
public Auto(String tp, Double nwPr){
type = tp;
prijsPerDag = nwPr;
}
public void setPrijsPerDag(Double prPd){
prijsPerDag = prPd;
}
public Double getPrijsPerDag(){
return prijsPerDag;
}
public String toString(){
String s = type + " met prijs per dag: " + prijsPerDag + "\n";
return s;
}
}
答案 0 :(得分:2)
在AutoHuur.class中,您可以使用Auto对象从Auto.class获取prijsPerDag变量,例如:
gehuurdeAuto.getPrijsPerDag()
您可以计算价格:
aantalDagen * gehuurdeAuto.getPrijsPerDag()
这是你想做什么的?
答案 1 :(得分:0)
变量memory_limit = ?
是一个对象,当创建prijs
的实例时,该对象初始化为null
。由于永远不会设置AutoHuur
,因此始终为prijs
。
这就是null
始终评估为prijs == null
的原因。
您需要在某处设置true
。
您似乎需要处理您的设计理念。例如,您使用prijs
类名称,而实际上是每日费用和车型之间的链接。如果每个链接都由这样的对象表示(在您的情况下为Auto
),那么拥有多个实例绝对没有意义。
例如,
Auto
在技术上完全有效,但这不符合逻辑。
此外,如果一个类包含某种类型的数据,那么将该数据的操作委托给该类也是好的。
new Auto("Peugeot", 40.0);
new Auto("Peugeot", 40.0);
答案 2 :(得分:0)
你必须删除第一个System.out因为在Main.java中你的实例AutoHuur是空的,所以当你想要打印结果时,out将是空值。