dimanche 22 novembre 2015

Java Programmer's Calculator (initialization in if statement)

I'm trying to create a programmer's calculator (GUI) that will convert a value from one base form to another.

Here's my action listener snippet where I'm having difficulty

 private class RdoHandler implements ActionListener {

    @Override
    public void actionPerformed(ActionEvent ae) {
        String temp = txt.getText();
        int prev = 0;
        JRadioButton jb = (JRadioButton) ae.getSource();


        if (jb == BIN) {

            btnA.setEnabled(false);
            btnB.setEnabled(false);
            btnC.setEnabled(false);
            btnD.setEnabled(false);
            btnE.setEnabled(false);
            btnF.setEnabled(false);
            btn0.setEnabled(!false);
            btn1.setEnabled(!false);
            btn2.setEnabled(false);
            btn3.setEnabled(false);
            btn4.setEnabled(false);
            btn5.setEnabled(false);
            btn6.setEnabled(false);
            btn7.setEnabled(false);
            btn8.setEnabled(false);
            btn9.setEnabled(false);

            temp = txt.getText();
            if (prev == 3) {
                temp = Integer.toBinaryString(Integer.parseInt(txt.getText(), 8));
                txt.setText(temp);

            } else if (prev == 2) {
                temp = Integer.toBinaryString(Integer.parseInt(txt.getText(), 16));
                txt.setText(temp);

            } else if (prev == 4) {
                temp = Integer.toBinaryString(Integer.parseInt(txt.getText()));
                txt.setText(temp);

            } else {
                txt.setText("");
            }

            prev = 1;

        }
        if (jb == HEX) {

            btnA.setEnabled(!false);
            btnB.setEnabled(!false);
            btnC.setEnabled(!false);
            btnD.setEnabled(!false);
            btnE.setEnabled(!false);
            btnF.setEnabled(!false);
            btn0.setEnabled(!false);
            btn1.setEnabled(!false);
            btn2.setEnabled(!false);
            btn3.setEnabled(!false);
            btn4.setEnabled(!false);
            btn5.setEnabled(!false);
            btn6.setEnabled(!false);
            btn7.setEnabled(!false);
            btn8.setEnabled(!false);
            btn9.setEnabled(!false);
            temp = txt.getText();

            if (prev == 1) {
                temp = Integer.toHexString(Integer.parseInt(txt.getText(), 2));
                txt.setText(temp);


            } else if (prev == 3) {
                temp = Integer.toHexString(Integer.parseInt(txt.getText(), 8));
                txt.setText(temp);


            } else if (prev == 4) {
                temp = Integer.toHexString(Integer.parseInt(txt.getText()));
                txt.setText(temp);


            } 
            prev = 2;

        }
        if (jb == OCT) {

            btnA.setEnabled(false);
            btnB.setEnabled(false);
            btnC.setEnabled(false);
            btnD.setEnabled(false);
            btnE.setEnabled(false);
            btnF.setEnabled(false);
            btn0.setEnabled(!false);
            btn1.setEnabled(!false);
            btn2.setEnabled(!false);
            btn3.setEnabled(!false);
            btn4.setEnabled(!false);
            btn5.setEnabled(!false);
            btn6.setEnabled(!false);
            btn7.setEnabled(!false);
            btn8.setEnabled(false);
            btn9.setEnabled(false);

            temp = txt.getText();

            if (prev == 1) {
                temp = Integer.toOctalString(Integer.parseInt(txt.getText(), 2));
                txt.setText(temp);
            } else if (prev == 2) {
                temp = Integer.toOctalString(Integer.parseInt(txt.getText(), 16));
                txt.setText(temp);
            } else if (prev == 4) {
                temp = Integer.toOctalString(Integer.parseInt(txt.getText()));
                txt.setText(temp);
            }

            prev = 3;
        }
        if (jb == DEC) {

            btnA.setEnabled(false);
            btnB.setEnabled(false);
            btnC.setEnabled(false);
            btnD.setEnabled(false);
            btnE.setEnabled(false);
            btnF.setEnabled(false);
            btn0.setEnabled(!false);
            btn1.setEnabled(!false);
            btn2.setEnabled(!false);
            btn3.setEnabled(!false);
            btn4.setEnabled(!false);
            btn5.setEnabled(!false);
            btn6.setEnabled(!false);
            btn7.setEnabled(!false);
            btn8.setEnabled(!false);
            btn9.setEnabled(!false);

            temp = txt.getText();

            if (prev == 1) {
                temp = Integer.toString(Integer.parseInt(txt.getText(), 2));
                txt.setText(temp);
            } else if (prev == 3) {
                temp = Integer.toString(Integer.parseInt(txt.getText(), 8));
                txt.setText(temp);
            } else if (prev == 2) {
                temp = Integer.toString(Integer.parseInt(txt.getText(), 16));
                txt.setText(temp);
            }
            prev = 4;


        }

    }

}

As you can see, I use prev to determine if the value is a binary, octal, hex, or decimal.

The problem, is when I initialize the value of prev in an if statement, the value of prev reverts back to 0. Please help :)

Aucun commentaire:

Enregistrer un commentaire