为什么我会收到“数字格式例外”?

时间:2016-06-02 17:23:20

标签: java swing number-formatting

我有这个代码,其中有一个将二进制转换为十进制的函数。它将JTextArea的文本设置为结果,并将结果附加到不同的JTextArea。前者工作正常,但后者导致出现上述异常。这是我的代码。请帮忙。

JButton numerical = new JButton("BIN->NUM");
    numerical.setFont(small);
    numerical.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            Display.setText(String.valueOf(Integer.parseInt(Display.getText(), 2)));
            try {
                Memory.append(String.valueOf(Integer.parseInt(Display.getText(), 2))); 
                Memory.append("\n");
            } catch (Exception ie) {
                Memory.append(String.valueOf(Integer.parseInt(Display.getText(), 2)));
            }
        }
    });

1 个答案:

答案 0 :(得分:3)

正如你所说,第一个正常。此时

Display.setText(String.valueOf(Integer.parseInt(Display.getText(), 2)));

parseInt()的输入值是二进制形式,转换有效。但是setText()将二进制值替换为十进制等值。然后当你尝试

Memory.append(String.valueOf(Integer.parseInt(Display.getText(), 2))); 

该数字为十进制格式,第二次转换失败,因为您指定了基数2,并且它希望该数字为二进制。