我在有工作按钮的计算器中有一个内部类。我有一个JTextArea
,在其中按下按钮将注册一个1-9的数字,然后在选择操作后打印新行。选择一个操作后,我有一个布尔值,它将在再次打印之前检查是否计算结果。我试图通过使用以下方法拆分每个数字并将其存储:
String s = textArea.getText();
String[] parts = s.split("\n|\\=|\\-|\\/|\\*|\\+");
虽然我期望的是类似的东西
100+
100=
200+
我正遇到:
100+
100=
java.lang.NumberFormatException: empty String
要进行这些计算,我使用了以下代码段:
if(s.length() > 0){
if(calc == true){
textArea.setText(textArea.getText() + "=" + "\n");
d2 = Double.parseDouble(parts[counter]);
result = d1 + d2;
textArea.setText(textArea.getText() + result + buttonText + "\n");
d1 = d2;
}
if(Character.isDigit(s.charAt(s.length()-1)) && calc == false){
textArea.setText(textArea.getText() + buttonText + "\n");
d1 = Double.parseDouble(parts[counter]);
counter++;
calc = true;
}
}
是否有一种方法可以存储每次输入后要使用的数字,而不会遇到此错误?
编辑:该行发生错误
Double.parseDouble(parts[counter]);
将其删除后不会导致任何错误,但仍可以正常打印。我通过Double.parseDouble(parts [0]);测试发现的内容;它可以正常工作并返回从按钮输入的第一个字符串,但是在此之后,似乎不再有任何值存储在
中。String[] parts = s.split("\n|\\=|\\-|\\/|\\*|\\+");
数组,尽管有其他输入满足定界符要求,但它似乎仍在那里停止。我想知道这是否是由于split方法未在数组中添加其他输入而引起的问题。
根据要求,我还将在相关的位置发布完整的代码
class operands implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
Object obj = event.getSource();
JButton but = null;
String buttonText = "";
//casts button with object
if(obj instanceof JButton)
{
but = (JButton) obj;
}
//sets string of text to button text
if(but != null)
{
buttonText = but.getText();
}
String s = textArea.getText();
//store numbers after each operand
String[] parts = s.split("\n|\\=|\\-|\\/|\\*|\\+");
if(s.length() > 0)
{
if(calc)
{
//performs calculation and returns result
textArea.setText(textArea.getText() + "=" + "\n");
d2 = Double.parseDouble(parts[counter]);
result = d1 + d2;
textArea.setText(textArea.getText() + result + buttonText + "\n");
d1 = d2;
}
if(Character.isDigit(s.charAt(s.length()-1)) && !calc)
{
//updates function to perform calculation on next operand
textArea.setText(textArea.getText() + buttonText + "\n");
d1 = Double.parseDouble(parts[counter]);
counter++;
calc = true;
}
}
}
答案 0 :(得分:0)
感谢所有尝试提供帮助的人。我找到了问题。
对于字符串.split()函数,我使用“ \ n”作为分隔符之一。这样做似乎在将数字存储到字符串中时会出现问题,结果会将空结果存储到数组中。从定界符中删除换行符似乎已解决了该问题。