Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么将float转换为二进制GUI不';不行?_Java_User Interface - Fatal编程技术网

Java 为什么将float转换为二进制GUI不';不行?

Java 为什么将float转换为二进制GUI不';不行?,java,user-interface,Java,User Interface,我不知道为什么我的代码总是出错。它符合正确的要求,但当我运行代码时,它会给我一个错误。我首先在控制台中完成了这项工作,但我决定改用一个简单的GUI,我遇到了麻烦。代码如下:我还没有使用其他方法,因为在创建任何其他方法之前,我首先尝试让代码为第一个按钮工作 public class ComputingArithmetic extends JPanel { JButton numToBit; JTextField tNumToBit, tNumToBit2, tBitToNum;

我不知道为什么我的代码总是出错。它符合正确的要求,但当我运行代码时,它会给我一个错误。我首先在控制台中完成了这项工作,但我决定改用一个简单的GUI,我遇到了麻烦。代码如下:我还没有使用其他方法,因为在创建任何其他方法之前,我首先尝试让代码为第一个按钮工作

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();
    }
}

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

JTextField tNumToBit = new JTextField(3);
JTextField tNumToBit2 = new JTextField(8);
应该是:

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

你犯了什么错误?如果你在问代码中的错误,你应该在问题中列出错误。老兄,非常感谢!就在我面前。我真是太感谢你了!