空指针异常toString()方法

时间:2016-04-02 15:44:13

标签: java

编辑:问题出在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; 
 }
}

0 个答案:

没有答案