簡體   English   中英

無法在原始類型 int 上調用 getText() 和 setText()

[英]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.

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