[英]Cannot invoke getText() and setText() on the primitive type int
我正在嘗試使用 javafx 和場景構建器構建一個計算器。 計算器執行加法、乘法減法和除法的基本運算。 我在以下幾行中遇到錯誤
digit1 = Integer.parseInt(digit1.getText().toString());
digit2 = Integer.parseInt(digit2.getText());
和
//display answer
sol1.setText("" + digit1 + symbol + digit2 + "=" + sol1);
以下是 controller class 的代碼。
public class MyController {
TextField digit1;
TextField digit2;
Button btn1;
Button btn2;
Button btn3;
Button btn4;
Label sol1;
public void start(Stage primaryStage) {
digit1 = new TextField();
digit2 = new TextField();
btn1 = new Button("/");
btn2 = new Button("*");
btn3 = new Button("+");
btn4 = new Button("-");
sol1 = new Label("?");
}
public void attachCode() {
//have each button run BTNCODE when clicked
btn1.setOnAction(e -> btncode(e));
btn2.setOnAction(e -> btncode(e));
btn3.setOnAction(e -> btncode(e));
btn4.setOnAction(e -> btncode(e));
}
public void btncode(ActionEvent e) {
int digit1, digit2, sol1;
char symbol;
//read numbers in from textfields
digit1 = Integer.parseInt(digit1.getText().toString());
digit2 = Integer.parseInt(digit2.getText());
if (e.getSource() == btn1) {
symbol = '+';
sol1 = digit1 + digit2;
} else if (e.getSource() == btn2) {
symbol = '-';
sol1 = digit1 - digit2;
} else if (e.getSource() == btn3) {
symbol = 'x';
sol1 = digit1 * digit2;
} else {
symbol = '/';
sol1 = digit1 / digit2;
}
//display answer
sol1.setText("" + digit1 + symbol + digit2 + "=" + sol1);
}
}
我猜您的問題與使用相同的變量名有關,並且在解析類型上存在沖突,請嘗試使用digit1 = Integer.parseInt(this.digit1.getText().toString());
並將解決問題。
您的變量在這里有相同的名稱
TextField digit1;
TextField digit2;
Label sol1;
和這里
int digit1, digit2, sol1;
你應該這樣使用this
鍵
digit1 = Integer.parseInt(this.digit1.getText().toString());
digit2 = Integer.parseInt(this.digit2.getText());
this.sol1.setText("" + digit1 + symbol + digit2 + "=" + sol1);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.