Java - 为什么不将这两个类相互通信?

时间:2015-02-04 09:49:36

标签: java class methods communication

我试图让Bil从Person获得一个名字,方法是在Bil中将方法Bagare()与人物中的bilagare()对话。我的意图是让bilagare()通过avläsNamn()(也在Person中)获得名称。我究竟做错了什么?我确信有更简单的方法可以做到这一点,但它是Java类中的一个赋值,我们必须使用上面提到的类和方法。以下是Bil和Person两个班级

package Objektorientering_kap_4;

import javax.swing.JOptionPane;

public class Bil{

Person ba;

public String regNum(){

    String registrering = JOptionPane.showInputDialog("Ange registreringsnummer, utan mellanslag");

    char l1 = registrering.charAt(0);
    char l2 = registrering.charAt(1);
    char l3 = registrering.charAt(2);
    char n1 = registrering.charAt(3);
    char n2 = registrering.charAt(4);
    char n3 = registrering.charAt(5);

    String N = ""+n1+n2+n3;
    int NS = Integer.parseInt(N);

    if(registrering.length() == 6 && 000 <= NS && NS <= 999 ){

    String regnum = registrering;

    return(regnum);    

    }
    else{

        String error = "Error";
        return(error);

    }


}

public String bilmarke(){

    String marke = JOptionPane.showInputDialog("Ange bilmärke");

    return(marke);

}

public String modell(){

    String bilmodell = JOptionPane.showInputDialog("Ange bilmodell");

    return(bilmodell);

}

public String Bagare(){

    String namn = ba.bilagare();

    return(namn);

}

}

package Objektorientering_kap_4;

import javax.swing.JOptionPane;

public class Person{

private String namn, adress;
private Person makeMaka;

public Person(String n){

    namn = "Sven";

}

public String avläsNamn(){

    return namn;

}

public void sättAdress(String adr){

    adress = adr;

}

public String avläsAdress(){

    return adress;

}

public void bröllop(Person p){

    makeMaka = p;
    p.makeMaka = this;

}

public void skilsmässa(){

    makeMaka.makeMaka = null;
    makeMaka = null;

}

public Person giftMed(){

    return makeMaka;

}

public String bilagare(){

    String agare = avläsNamn();

    return(agare);

}

}

3 个答案:

答案 0 :(得分:1)

你永远不会初始化你的ba变量,所以它是null,你不能通过该空引用调用Person的任何方法。也许你应该传递给Bil一个Person对象的构造函数。

答案 1 :(得分:0)

Person ba是人物对象的引用,而非实际实例。如果你想要一个人物对象,你需要写

Person ba = new Person("name");

否则你已经写好了。

Person ba = null;

因此,当您使用ba时,您会获得NullPointerException

答案 2 :(得分:0)

使用Person运算符new创建Person ba = new Person()对象的实例。