为什么将float转换为二进制GUI并不起作用?

时间:2017-02-05 05:29:50

标签: java user-interface

我不确定为什么我的代码中出现错误。它符合正确,但是当我运行代码时,它给了我一个错误。我首先在控制台中完成了这个,但我决定使用一个简单的GUI,而且我遇到了麻烦。这里是代码:我还没有使用其他方法,因为我在创建任何其他方法之前首先尝试让代码适用于第一个Button。

public class ComputingArithmetic extends JPanel {

    JButton numToBit;
    JTextField tNumToBit, tNumToBit2, tBitToNum;
    public ComputingArithmetic(){

        JButton numToBit = new JButton("Decimal to 32 Bit");
        numToBit.addActionListener(new NumToBitListener());
        JTextField tNumToBit = new JTextField(3);
        JTextField tNumToBit2 = new JTextField(8);

        add(numToBit);
        add(tNumToBit);
        add(tNumToBit2);

        setPreferredSize(new Dimension(320, 100));
    }
    public static void main(String []args){

        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        ComputingArithmetic compute = new ComputingArithmetic();
        frame.getContentPane().add(compute);
        frame.pack();
        frame.setVisible(true);
    }
    private class NumToBitListener implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent e) {
            tNumToBit2.setText(DecimalToBit(Float.parseFloat(tNumToBit.getText())));
        }
    }
    private static float BitToDecimal( String Binary ) {
        int intBits = Integer.parseInt(Binary, 2);
        float myFloat = Float.intBitsToFloat(intBits);
        return myFloat;
    }
    private static String DecimalToBit( float value ) {
        if(value > 0) {
            int intBits = Float.floatToIntBits(value);
            String binary = Long.toBinaryString(intBits);
            return "0"+binary;
        }
        else{
            int intBits = Float.floatToIntBits(value);
            String binary = Long.toBinaryString(intBits);
            return binary;
        }
    }
    private static String HexToBit(String binary){return Long.toHexString(Long.parseLong(binary,2));}
    private static String BitToHex(String binary){
        Long i = Long.parseLong(binary, 16);
        Float f = Float.intBitsToFloat(i.intValue());
        return f.toString();
    }
}

1 个答案:

答案 0 :(得分:2)

在构造函数中,您将文本字段分配给局部变量。实例字段保持为空,在调用NullPointerException时会导致ActionListener

JTextField tNumToBit = new JTextField(3);
JTextField tNumToBit2 = new JTextField(8);

应该是:

tNumToBit = new JTextField(3);
tNumToBit2 = new JTextField(8);