簡體   English   中英

方法返回null [簡單]

[英]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;
}

實際上, namestate尚未初始化。 另請參見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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM