괜찮습니다. 저는 Java로 계산기를 작성하고 있습니다. String
을 입력 할 수 있습니다. 나는 JTextField
에 텍스트를 쓰려면 JButtons
을 사용합니다.계산기가 Java의 계산 방법에 대해 빈 문자열 오류를 생성합니다.
사용자가 같음 버튼을 클릭하면 수행 할 상대 작업을 찾습니다 (연산자 버튼을 클릭하면 int가 특정 숫자로 설정되므로 추가는 1입니다). 먼저 String
을 char
배열로 변환 한 다음 문자가 숫자인지 아니면 연산자인지 확인합니다.
저는 모든 계산을 위해 여러 가지 방법을 쓰려고합니다. 계산기를 (saddition, subtraction 등) 할 수있게 만들 계획입니다. 그런 다음 .append
메서드를 사용하여 연산자가 아닌 문자를 StringBuffers
에 작성한 다음 문자열로 변환 한 다음 나중에 두 배로 만듭니다. 그런 다음 계산을 수행하고 결과를 반환합니다.
계산기를 사용하면 StringBuffer
이 들어있는 문자열을 double
으로 바꾸는 행에 java.lang.NumberFormatException
이보고됩니다. 예외는 빈 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
나는 34 + 0. 계산을 썼다. c1은 34, c2는 비어있다. – imulsion