【问题标题】:Why do I get a "Number Format Exception"?为什么会出现“数字格式异常”?
【发布时间】:2016-06-02 17:23:19
【问题描述】:

我有这段代码,其中有一个将二进制转换为十进制的函数。它将 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)));
            }
        }
    });

【问题讨论】:

  • 请提供堆栈跟踪
  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。

标签: java swing number-formatting


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-09
    相关资源
    最近更新 更多