当前位置: 技术问答>java相关
帮我解决这个问题给80~~~~~~~~`至少
来源: 互联网 发布时间:2015-11-12
本文导语: 这个程序编译通过了,只是出不了结果,我都不知道怎么办了,只有请教大虾了,SOS~~~~~~~~~~~`源程序如下,帮我解决的,给出问题的原因的有重分 import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.lang.*; p...
这个程序编译通过了,只是出不了结果,我都不知道怎么办了,只有请教大虾了,SOS~~~~~~~~~~~`源程序如下,帮我解决的,给出问题的原因的有重分
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.lang.*;
public class a1
{
public static void main(String args[]) throws Exception
{
new a1();
}
public a1()
{
useselect("计算器");
}
int len; //存放计算式的长度
char comulatechar[]=new char[20]; //计算式
public void useselect(String select)
{
if(select.equals("计算器"))
{
String inputValue=JOptionPane.showInputDialog(null,
"请输入计算表达式","欢迎使用计算 器",JOptionPane.QUESTION_MESSAGE);
double result;
len=inputValue.length();
inputValue.getChars(0,len,comulatechar,0);
comulatechar[len]='=';
result=operand();
String message="计算结果为:"+result;
Object[] endButton = {"结束程序","继续"}; //选择按钮项目
JOptionPane end = new JOptionPane(message,JOptionPane.WARNING_MESSAGE,
JOptionPane.DEFAULT_OPTION,null,endButton);
//建立 JOptionPane 对象 end
JDialog endD = end.createDialog(end,"输出结果"); //产生 endD 对话框
endD.setVisible(true); //显示 endD 对话框
Object push = end.getValue(); //取得使用者按下的按钮
if(push == endButton[0])
{
System.exit(0); //结束程序
}
else if(push == endButton[1])
{
new a1();
}
}
}
char[] OPTR=new char[len]; //OPTR为运算符栈
double[] OPND=new double[len]; //OPND为运算数栈
// char fun[10][7]; //保存数学函数数组,以便比较
int OPNDPop=0; //设置全局变量为运算数栈栈顶
char OPTRPop=0; //运算符栈
int charlen=0; //当前读入字符的长度
public void initstack()
{
for(int i=0;i' ';i++);
return(OP[--i]);
}
//返回栈顶操作数
public double GetTop2(double OP[])
{ int i=0;
for(;OP[i]!=0;i++);
return(OP[0]);
}
//接收两个操作数与运算符号,并返回运算值
public double Operate(double a,char ch,double b)
{
double midtotal=0;
switch(ch)
{
case '+': midtotal=a+b; break;
case '-': midtotal=a-b; break;
case '*': midtotal=a*b; break;
case '/': midtotal=a/b; break;
default :System.exit(0);
}
return(midtotal);
}
//比较算符的优先级,返回比较值''
char Precede1(char theta1,char theta2)
{
char midchar=' ';
switch(theta1)
{
case '+':
case '-': switch(theta2)
{
case '+':
case '-':
case ')':
case '=': midchar='>'; break;
case '*':
case '/':
case '(': midchar=''; break;
case '(': midchar=''; break;
default :System.exit(0);
}
break;
case '=': switch(theta2)
{
case '+':
case '-':
case '*':
case '/':
case '(': midchar='':
theta=Popchar(OPTR,theta);
b=Popnum(OPND,b); a=Popnum(OPND,a);
Pushnum(Operate(a,theta,b));
break;
}
return(c);
}
//把数字字符转化为数字
public char Readnumber(char numchar)
{
int i,scale=0;
double numvalue=0;
while (numchar>='0'&&numchar='0'&&numchar='0'&&numchar='0'&&numchar
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.lang.*;
public class a1
{
public static void main(String args[]) throws Exception
{
new a1();
}
public a1()
{
useselect("计算器");
}
int len; //存放计算式的长度
char comulatechar[]=new char[20]; //计算式
public void useselect(String select)
{
if(select.equals("计算器"))
{
String inputValue=JOptionPane.showInputDialog(null,
"请输入计算表达式","欢迎使用计算 器",JOptionPane.QUESTION_MESSAGE);
double result;
len=inputValue.length();
inputValue.getChars(0,len,comulatechar,0);
comulatechar[len]='=';
result=operand();
String message="计算结果为:"+result;
Object[] endButton = {"结束程序","继续"}; //选择按钮项目
JOptionPane end = new JOptionPane(message,JOptionPane.WARNING_MESSAGE,
JOptionPane.DEFAULT_OPTION,null,endButton);
//建立 JOptionPane 对象 end
JDialog endD = end.createDialog(end,"输出结果"); //产生 endD 对话框
endD.setVisible(true); //显示 endD 对话框
Object push = end.getValue(); //取得使用者按下的按钮
if(push == endButton[0])
{
System.exit(0); //结束程序
}
else if(push == endButton[1])
{
new a1();
}
}
}
char[] OPTR=new char[len]; //OPTR为运算符栈
double[] OPND=new double[len]; //OPND为运算数栈
// char fun[10][7]; //保存数学函数数组,以便比较
int OPNDPop=0; //设置全局变量为运算数栈栈顶
char OPTRPop=0; //运算符栈
int charlen=0; //当前读入字符的长度
public void initstack()
{
for(int i=0;i' ';i++);
return(OP[--i]);
}
//返回栈顶操作数
public double GetTop2(double OP[])
{ int i=0;
for(;OP[i]!=0;i++);
return(OP[0]);
}
//接收两个操作数与运算符号,并返回运算值
public double Operate(double a,char ch,double b)
{
double midtotal=0;
switch(ch)
{
case '+': midtotal=a+b; break;
case '-': midtotal=a-b; break;
case '*': midtotal=a*b; break;
case '/': midtotal=a/b; break;
default :System.exit(0);
}
return(midtotal);
}
//比较算符的优先级,返回比较值''
char Precede1(char theta1,char theta2)
{
char midchar=' ';
switch(theta1)
{
case '+':
case '-': switch(theta2)
{
case '+':
case '-':
case ')':
case '=': midchar='>'; break;
case '*':
case '/':
case '(': midchar=''; break;
case '(': midchar=''; break;
default :System.exit(0);
}
break;
case '=': switch(theta2)
{
case '+':
case '-':
case '*':
case '/':
case '(': midchar='':
theta=Popchar(OPTR,theta);
b=Popnum(OPND,b); a=Popnum(OPND,a);
Pushnum(Operate(a,theta,b));
break;
}
return(c);
}
//把数字字符转化为数字
public char Readnumber(char numchar)
{
int i,scale=0;
double numvalue=0;
while (numchar>='0'&&numchar='0'&&numchar='0'&&numchar='0'&&numchar