0

我必须从不同的 JTextfields 计算两个输入,在组合框中选择一个运算符并根据所选的运算符计算结果。但是,我得到 0 作为我的答案。如何计算结果而不得到 0?

private void jButton1_actionPerformed(ActionEvent e) {

    int x = Integer.parseInt(jTextField1.getText());
    int y = Integer.parseInt(jTextField2.getText());

    String Result = "0";
    jLabel4.setText(Result);
    int total = Integer.parseInt(Result);

    if(Operator.equals("+")) {
        total = x + y;
    }
    else if(Operator.equals("-")) {
        total = x - y;
    }
    else if(Operator.equals("*")) {
        total = x * y;
    }
    else if(Operator.equals("/")) {
        total = x / y;

    }

}
4

3 回答 3

3

那是因为您在计算结果后没有更新 jLabel4。

ifs 之后,您应该添加另一个jLabel4.setText(Integer.toString(result));

于 2011-01-12T11:00:48.807 回答
2

从这段代码中,jLabel4是结果标签。

您正在做的是首先使用“0”分配给字符串结果,然后将此(“0”)设置为文本,然后进行计算。

你应该做的是先计算,然后设置结果。

private void jButton1_actionPerformed(ActionEvent e) {

    int x = Integer.parseInt(jTextField1.getText());
    int y = Integer.parseInt(jTextField2.getText());

    int total = 0;

    if(Operator.equals("+")) {
        total = x + y;
    }
    else if(Operator.equals("-")) {
        total = x - y;
    }
    else if(Operator.equals("*")) {
        total = x * y;
    }
    else if(Operator.equals("/")) {
        total = x / y;

    }

    jLabel4.setText(String.valueOf(total));


}
于 2011-01-12T11:02:58.823 回答
1

您应该将方法分成两部分:一部分负责计算结果,另一部分负责显示。除此之外,您可能应该使用双精度,否则除法会给您带来意想不到的结果,即 0(例如,在 1/2 的情况下)。

private void jButton1_actionPerformed(ActionEvent e) {

     int x = Integer.parseInt(jTextField1.getText());
     int y = Integer.parseInt(jTextField2.getText());

     double result = calculateResult(operator, x, y)
     jLabel4.setText(String.valueOf(result));
}

private double calculateResult(String operator, int x, int y) {

     if(operator.equals("+")) {
         total = x + y;
     }
     else if(operator.equals("-")) {
         total = x - y;
     }
     else if(operator.equals("*")) {
         total = x * y;
     }
     else if(operator.equals("/")) {
         total = x / y;

     }
     return total;
 }
于 2011-01-12T11:01:33.130 回答