为啥会出现“数字格式异常”?
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,它希望数字是二进制。
【讨论】:
以上是关于为啥会出现“数字格式异常”?的主要内容,如果未能解决你的问题,请参考以下文章