编辑:问题出在Kuca.java文件中,在第一个构造函数中,第一个参数应该是Stan _s
或者是this.s= new Stan(s);
。然后构造函数有引用的东西。
=====
面对空指针问题,我唯一能够确定的是Stan.java中的toString()
方法造成了麻烦,但我似乎无法弄清楚为什么
Test.java
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner s= new Scanner(System.in);
System.out.println("Unesite adresu");
String adresa= s.nextLine();
System.out.println("Unesite stambeni objekat koji zelite");
String tip= s.next();
if(tip.equals("k")) {
System.out.println("Unesite broj ukucana");
int brUkucana= s.nextInt();
System.out.println("Unesite broj kvadrata");
double P= s.nextDouble();
Kuca kuca= new Kuca(new Stan(P, brUkucana), adresa);
System.out.println("asdasdas");
System.out.println(kuca.toString());
System.out.println("Porez: " + kuca.porez);
}
}
}
Kuca.java,注意return
方法中的toString()
,s.ToString()
导致了问题(当我删除它时,问题就消失了(
public class Kuca extends StambeniObjekat {
private Stan s;
public Kuca(Stan s, String adresa) {
super(adresa);
s= new Stan(s);
}
public Kuca(double povrsina, int brStanara, String adresa) {
super(adresa);
s= new Stan(povrsina, brStanara);
}
public Kuca(final Kuca k) {
super(k);
s= new Stan(k.s);
}
public String toString() {
return "Kuca: \n" + "Adresa: " + getAdresa() + "\n" + s.toString();
}
public double porez(double cena_po_kvadratu) {
if(s.getBrStanara() <= 2) {
porez= s.getPovrsina() * cena_po_kvadratu;
}
else if (s.getBrStanara() > 2) {
porez= s.getPovrsina() * cena_po_kvadratu * (1 - (s.getBrStanara() - 2) * 0.05);
}
return porez;
}
}
在previus文件的s.toString()
中找到return
的来源。
public class Stan {
private double povrsina;
private int brStanara;
public Stan(double povrsina, int brStanara) {
this.povrsina=povrsina;
this.brStanara=brStanara;
}
public Stan(final Stan s) {
povrsina=s.povrsina;
brStanara=s.brStanara;
}
public double getPovrsina() {
return povrsina;
}
public void setPovrsina(double povrsina) {
this.povrsina=povrsina;
}
public int getBrStanara() {
return brStanara;
}
public void setBrStanara(int brStanara) {
this.brStanara=brStanara;
}
public String toString() {
return "Povrsina stana je " + povrsina + " m^2 \n" + "Broj Stanara je " + brStanara;
}
}