[英]Method returns null [simple]
對於入門Java,我正在創建Door類和DoorTester類。 本質上,我們正在試驗實例變量並創建公共方法。 我按如下所示制作了Door類,但是我的DoorTester在尋找.getState時返回“ null”
Door.java
public class Door {
// Create instance variables of type String
private String name;
private String state;
// Declare method 'open' and 'close'
public void open() {
state = "open";
}
public void close() {
state = "closed";
}
// Add a constructor for the Door class
public Door(String name, String state) {
}
// Create an accessor of 'state'
public String getState() {
return name;
}
// Set the state
public void setState(String newState) {
state = newState;
}
}
DoorTester.java
public class DoorTester {
public static void main(String[] args) {
Door frontDoor = new Door("Front", "open");
System.out.println("The front door is " + frontDoor.getState());
System.out.println("Expected: open");
Door backDoor = new Door("Back", "closed");
System.out.println("Expected: closed");
// Use the mutator to change the state variable
backDoor.setState("open");
System.out.println("The back door is " + backDoor.getState());
System.out.println("Expected: open");
// Add code to test the setName mutator here
}
}
您將需要修改Door
類的構造函數,例如
public Door(String name, String state) {
this.name=name;
this.state=state;
}
實際上, name
和state
尚未初始化。 另請參見this Java中“ this”的含義是什么?
修改后的代碼段:
public class Door {
// Create instance variables of type String
private String name;
private String state;
// Declare method 'open' and 'close'
public void open() {
state = "open";
}
public void close() {
state = "closed";
}
// Add a constructor for the Door class
public Door(String name, String state) {
this.name=name;
this.state=state;
}
// Create an accessor of 'state'
public String getState() {
return state; //<<<<<<<----------also make an Edit here
}
// Set the state
public void setState(String newState) {
state = newState;
}
}
您的getState()
方法不返回state
,它返回name
:
// Create an accessor of 'state'
public String getState() {
return name; // <-- Simply change this
}
另外,您的構造函數不會設置字段。 您需要執行以下操作:
// Add a constructor for the Door class
public Door(String name, String state) {
this.name = name;
this.state = state;
}
有您的問題Door
級
public class Door {
private String name;
private String state;
public void open() {
state = "open";
}
public void close() {
state = "closed";
}
public Door(String name, String state) { // argument passed here need to set
// set like
this.name=name;
this.state=state;
}
public String getState() {
return name;
}
public void setState(String state) {
state = state; // you need to use this.state=state
}
}
此關鍵字在Java
重要性
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.