저는 java를 시험 중입니다. 몇 가지 문제가있는 것 같습니다. 유일한 문제는 Stars 클래스의 확장을 추가 할 때 생성자가 Stars test = new Star()와 같은 선언없이 호출되는 것입니다.Java - extends는 다른 클래스의 생성자를 호출하는 것처럼 보입니다.
Knight.java
import javax.swing.JOptionPane;
public class Knight extends Stars {
private String name;
private int health, battles, age, gold;
public Knight() {
name = JOptionPane.showInputDialog("What is the knight's name?");
String message = String.format("How much health does %s have?", name);
health = Integer.parseInt(JOptionPane.showInputDialog(message));
message = String.format("How many battles has %s been in?", name);
battles = Integer.parseInt(JOptionPane.showInputDialog(message));
message = String.format("How old is %s?", name);
age = Integer.parseInt(JOptionPane.showInputDialog(message));
message = String.format("How much gold does %s have?", name);
gold = Integer.parseInt(JOptionPane.showInputDialog(message));
}
public String getStats() {
// String message =
return String.format("\nKnight Name: %s\nKnight Health: %d\nKnight Battles: %d\nKnight Age: %d\nKnight Gold: $%d\n\n", name, health, battles, age, gold);
}
}
Stars.java 수입 javax.swing.JOptionPane;
public class Stars {
private int rows, cols;
private String skyScape = new String();
public Stars() {
rows = Integer.parseInt(JOptionPane.showInputDialog("How many rows of stars are there?"));
cols = Integer.parseInt(JOptionPane.showInputDialog("How many columns of stars are there?"));
for (int count = 0; count < rows; ++count) {
if ((count % 2) == 1) {
skyScape += " *";
} else {
skyScape += "*";
}
for (int colCount = 1; colCount < cols; ++colCount) {
skyScape += " *";
if (colCount == cols - 1) {
skyScape += "\n";
}
}
}
}
public int getRows() {
return rows;
}
public int getCols() {
return cols;
}
public String getSky() {
return skyScape;
}
}
도움이 될만한 의견이 있습니다.
내가 원할 때까지 별이 초기화되는 것을 피할 수있는 방법이 있습니까? 별을 추가하면 newStar = new Stars(); 두 번 묻는 메시지가 표시됩니다. Knights 클래스가 초기화 될 때 한 번, 한 번 수행 할 때 한 번 가정합니다. 또는 변수 이름을 처음으로 초기화 할 수 있습니까? –
생성자 대신에 setter 함수에 넣는 것만 큼 간단합니다. 초보자 실수! –