Kalkulator wywala złe wyniki :/

Kalkulator wywala złe wyniki :/
XE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 152
0

Witam no nie mogę znaleźć błędu, jak go rozwikłać?

Kopiuj
package main.java.calculator;

import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.text.Text;

public class CalculatorController {

    @FXML
    Label result;

    Text output = new Text();

    String number1 = "", operator = "";

    boolean equalsClicked = false;

    public void initialize() {
        result.textProperty().bind(output.textProperty());
        output.setText("");
    }

    @FXML
    private void numberButtonAction(ActionEvent event) {
        output.setText(output.getText() + ((Button) event.getSource()).getText());
    }

    @FXML
    private void processButtonAction(ActionEvent event) {
        if (number1 == "" && output.getText() != "") {
            number1 = output.getText();

        } else if (number1 != "" && output.getText() != "" && !equalsClicked) {
            number1 = String.valueOf(CalculationModel.calculate(Integer.parseInt(number1), Integer.parseInt(output.getText()), operator));
        } else if (number1 != "" && output.getText() != "" && equalsClicked) {
            operator = ((Button) event.getSource()).getText();
            number1 = String.valueOf(CalculationModel.calculate(Integer.parseInt(number1), Integer.parseInt(output.getText()), operator));
            equalsClicked = false;
        } else if (operator != "" && output.getText() == "") {
            System.out.println("Operator has changed!");
        } else {
            output.setText("");
            return;
        }
        output.setText("");
        operator = ((Button) event.getSource()).getText();
    }


    @FXML
    private void equalsButtonAction() {
        if (number1 != "" && output.getText() != "") {
            number1 = String.valueOf(CalculationModel.calculate(Integer.parseInt(number1), Integer.parseInt(output.getText()), operator));
            equalsClicked = true;
        }
        output.setText(number1);
    }

    @FXML
    private void CButtonAction() {
        number1 = operator = "";
        output.setText("");
    }
}
Kopiuj
package main.java.calculator;

public class CalculationModel {
    public static int calculate(int val1, int val2, String operator) {
        switch (operator) {
            case "+": {
                return val1+val2;
            }
            case "-": {
                return val1-val2;
            }
            case "x": {
                return val1*val2;
            }
            case "/": {
                if(val2!=0)
                return (int)(val1/val2);
            }
            default:
                System.out.println("error");
                return 0;
        }
    }
}

jarekr000000
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: U krasnoludów - pod górą
  • Postów: 4712
1

jak go rozwikłać?
To elementarne: opisać jaki to błąd. Co wprowadzasz i jaki resultat dostajesz, a jakiego oczekujesz.

Haskell
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4700
1

Hej, w celu przeanalizowania przyczyny błędu użyj debuggera.

XE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 152
0

Ymmm rozkminiłem w końcu

Kopiuj
else if (number1 != "" && output.getText() != "" && equalsClicked) {
            equalsClicked = false;

zamiast

Kopiuj
else if (number1 != "" && output.getText() != "" && equalsClicked) {
            operator = ((Button) event.getSource()).getText();
            number1 = String.valueOf(CalculationModel.calculate(Integer.parseInt(number1), Integer.parseInt(output.getText()), operator));
            equalsClicked = false;

operator był zastały więc jak robiło się np 3x2 (tj.6) i plus 6 to wychodziło 18 bo robiło się to drugie działanie jakby przez number1 + number1 + output

jarekr000000
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: U krasnoludów - pod górą
  • Postów: 4712
8

Super, że mogliśmy pomóc.
Gumowa kaczuszka

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.