Java - 为什么这两个 类 不能相互通信?
Java - Why won't these two classes communicate with eachother?
我试图通过让 Bil 中的 Bagare() 方法与 Person 中的 bilagare() 对话来让 Bil 从 Person 那里获取名字。我的意图是让 bilagare() 通过 avläsNamn()(也是亲自)获取名称。我究竟做错了什么?我确信有更简单的方法可以做到这一点,但它是 Java-class 中的一项作业,我们必须使用上面提到的 classes 和方法。以下是两个 classes 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);
}
}
您从未初始化 ba
变量,因此它为 null,您不能通过该 null 引用调用 Person
的任何方法。也许您应该将 Bil
的构造函数传递给 Person
对象。
Person ba
是对人物对象的 引用 ,而不是实际实例。如果你想要一个人对象,你需要写
Person ba = new Person("name");
否则你写的是有效的。
Person ba = null;
所以当你使用 ba
时你会得到 NullPointerException
使用 new
运算符 Person ba = new Person()
创建 Person
对象的实例。
我试图通过让 Bil 中的 Bagare() 方法与 Person 中的 bilagare() 对话来让 Bil 从 Person 那里获取名字。我的意图是让 bilagare() 通过 avläsNamn()(也是亲自)获取名称。我究竟做错了什么?我确信有更简单的方法可以做到这一点,但它是 Java-class 中的一项作业,我们必须使用上面提到的 classes 和方法。以下是两个 classes 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);
}
}
您从未初始化 ba
变量,因此它为 null,您不能通过该 null 引用调用 Person
的任何方法。也许您应该将 Bil
的构造函数传递给 Person
对象。
Person ba
是对人物对象的 引用 ,而不是实际实例。如果你想要一个人对象,你需要写
Person ba = new Person("name");
否则你写的是有效的。
Person ba = null;
所以当你使用 ba
时你会得到 NullPointerException
使用 new
运算符 Person ba = new Person()
创建 Person
对象的实例。