为啥会出现“数字格式异常”?

Posted

技术标签:

【中文标题】为啥会出现“数字格式异常”?【英文标题】: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)));
            
        
    );

【问题讨论】:

请提供堆栈跟踪 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。 How to avoid Number Format Exception in java?的可能重复 【参考方案1】:

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

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

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

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

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

【讨论】:

以上是关于为啥会出现“数字格式异常”?的主要内容,如果未能解决你的问题,请参考以下文章

为啥会出现 NSException 错误?

为啥会出现这个要怎么解决?

为啥 GoogleSignInAccount 会出现此错误?

为啥会出现死锁?

为啥有时我的页面中的 UI 有时会出现有时不出现?

为啥解密时会出现“BadPaddingException”?