我不确定为什么我的代码中出现错误。它符合正确,但是当我运行代码时,它给了我一个错误。我首先在控制台中完成了这个,但我决定使用一个简单的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();
}
}
答案 0 :(得分:2)
在构造函数中,您将文本字段分配给局部变量。实例字段保持为空,在调用NullPointerException
时会导致ActionListener
。
JTextField tNumToBit = new JTextField(3);
JTextField tNumToBit2 = new JTextField(8);
应该是:
tNumToBit = new JTextField(3);
tNumToBit2 = new JTextField(8);