程序作用是在字符串中提取数学表达式,如输入"2+3",既输出5 请各位高手指点一下为何m_charC(用于存储运算符号)无法得到正确的值,问题在程序注释中有详细描述package Cal;public class JJCC 
{
private double m_douA,m_douB;
private String m_strS;
private char[] m_charC=new char[5];//用于存储运算符
public double m_douResult;//运算结果

public JJCC(String s)
{
m_strS=new String(s);
m_douA=0;
m_douB=0;
}

public boolean Check()//检查算式合法性
{
char[] charChar=new char[50];
m_strS.getChars(0,m_strS.length(),charChar,0);
for(int i=0;i<charChar.length-1;i++)
if((charChar[i]=='+'||charChar[i]=='-'||charChar[i]=='*'||charChar[i]!='/')||(charChar[i]>='0'||charChar[i]<='9'))
{

return true;
}
System.out.println("Error 1");
return true;
}

public void Init()
{
int iLocal_A=0,iLocal_B=0;
if(Check())
{
char[] charChar=new char[50];
int j=m_strS.length();
m_strS.getChars(0,m_strS.length(),charChar,0);
for(int i=0;i<j;i++)
{
if(charChar[i]>='0'&&charChar[i]<='9')
{
continue;
}
else
{
iLocal_A=i-1;
iLocal_B=i+1;
break;
}

}
m_douA=Double.parseDouble(m_strS.substring(0, iLocal_A+1));
m_douB=Double.parseDouble(m_strS.substring(iLocal_B));
m_charC[0]=charChar[iLocal_A];/*问题出在这里,无论如何,运算符m_charC[0]的值为空,包括将这里换成m_charC[0]='+';跟踪变量后发现m_charC[0]的值依然为空,但是如果在构造函数中赋值变量则可以得到相应值*/
// System.out.println(m_charC);
}
else
return;


public void Cal()
{
switch(m_charC[0])
{
case '+':
Addtion();
break;
case '-':
Subtration();
break;
case '*':
Multiplication();
break;
case '/':
Division();
break;
}
}

public void Addtion()
{
m_douResult=m_douA+m_douB;
}
public void Subtration()
{
m_douResult=m_douA-m_douB;
}
public void Multiplication()
{
m_douResult=m_douA*m_douB;
}
public void Division()
{
m_douResult=m_douA/m_douB;
}
}