好吧,我正在用Java編寫計算器,並將String
輸入到我的加法中。我用JButtons
將文字寫入JTextField
。當用戶點擊等號按鈕時,我發現他們想要執行的相對操作(如果他們點擊一個操作符按鈕,我將int設置爲一個特定的數字(所以加1))。我首先將String
轉換爲char
數組,然後檢查字符是數字還是操作符。計算器爲Java中的計算方法生成空字符串錯誤
我打算爲我計算機能夠做的所有計算寫下幾種方法(傷害,減法等)。然後,我使用.append
方法將不是運算符的字符寫入StringBuffers
,然後我將其轉換爲字符串,之後再加倍。然後我進行計算,並返回結果。
當我嘗試使用計算器時,Eclipse會報告java.lang.NumberFormatException
,我嘗試將保存StringBuffer
的字符串轉換爲double
。異常是由空的String
引起的。
任何人都可以解釋爲什麼會發生這種情況,並提供解決方案嗎?
下面是相關代碼:
import java.awt.event.*;
import javax.swing.*;
import java.awt.GridLayout;
public class Calculator2012 extends JFrame implements ActionListener{
public static double calculateAdd(String inputString)//this is my addition method
{
int s = 0;
boolean g = true;
StringBuffer num1 = new StringBuffer();
StringBuffer num2 = new StringBuffer();
char[] b = inputString.toCharArray();
int i = 0;
if(g==true)
{
for(int v = 0; v<b.length; v++)
{
if(b[i]!='+')
{
num1.append(b[i]);
}
else
{
g = false;
s = ++i;
break;
}
i++;
}
}
else
{
for(int a = 0; a<(b.length-s); a++)
{
num2.append(b[s]);
s++;
}
}
String c1 = num1.toString();
String c2 = num2.toString();
double x = Double.parseDouble(c1);
double y = Double.parseDouble(c2);//this is the error producing line
double z = x+y;
return z;
}
這是我的方法調用:
public void actionPerformed(ActionEvent e)
{
//omitted irrelevant code
if(e.getSource()==equals)
{
s1 = tf1.getText();
s2 = " = ";
s3 = s1+s2;
tf1.setText(s3);
if(p==1)//p is my int that detects which operator to use
{
s1 = tf1.getText();
s2 = Double.toString(calculateAdd(s1));//I call the method here
s3 = s1+s2;
tf1.setText(s3);
適當的縮進大大提高了可讀性... – mellamokb 2012-07-30 20:25:56
我寫了34 + 0的計算。c1持有34,c2是空的 – imulsion 2012-07-30 20:30:32