100分——很简单的程序,出了点错误,请大家帮帮忙!
这是一个很简单的计算器,当除数为0时为什么不能作出错误提示呢?是哪里出错了??
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
//显示计算器结果的窗体
class Result extends JPanel{
JTextField text=new JTextField( "0 ");
Result(){
text.setHorizontalAlignment(SwingConstants.LEFT);
text.enable(false);
setLayout(new BorderLayout());
add(text,BorderLayout.CENTER);
}
}
//计算器数字按纽定义面板
class Number_Key extends JPanel{
JButton one=new JButton( " 1 ");
JButton two=new JButton( " 2 ");
JButton three=new JButton( " 3 ");
JButton plus=new JButton( " + ");
JButton ce=new JButton( " C ");
JButton four=new JButton( " 4 ");
JButton five=new JButton( " 5 ");
JButton six=new JButton( " 6 ");
JButton sub=new JButton( " - ");
JButton b=new JButton( " B ");
JButton seven=new JButton( " 7 ");
JButton eight=new JButton( " 8 ");
JButton nine=new JButton( " 9 ");
JButton mul=new JButton( " * ");
JButton ds=new JButton( "1/x ");
JButton zero=new JButton( " 0 ");
JButton zf=new JButton( "+/- ");
JButton point=new JButton( " . ");
JButton div=new JButton( " / ");
JButton equal=new JButton( " = ");
Number_Key(){
setLayout(new GridLayout(4,5,10,10));
add(one);
add(two);
add(three);
add(plus);
add(ce);
add(four);
add(five);
add(six);
add(sub);
add(b);
add(seven);
add(eight);
add(nine);
add(mul);
add(ds);
add(zero);
add(zf);
add(point);
add(div);
add(equal);
}
}
//计算器主类
public class Calculator extends JFrame implements ActionListener
{
Result result =new Result(); //定义text的面板
Number_Key number_key =new Number_Key(); //定义按钮面板
boolean com=false;//当单击按钮+/-/*/ /时,com=true
int i=0;//当i=0时说明是我们第一次输入,字符串sum不会累加
String sum= " ";//存放text的内容
int flag=1;//判断是不是第一次点击运算符 1表是 0表否
int backspace=1;//判断退格键是否有效 1表有效 0表否
int click_ysf=0;//判断上一次点击的是不是运算符 1表是 0表否
double num1,num2,ad;//
double total=0;//存放单击按钮+,-,*,/之前的数值
int symbol=0;//+,-,*,/的代号分别为1,2,3,4
Calculator(){
super( "Calculator "); //设定标题
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设定关闭窗体时退出程序
JPanel pane=new JPanel(); //定义主面板
pane.setLayout(new BorderLayout());
pane.add(result,BorderLayout.NORTH);
pane.add(number_key,BorderLayout.SOUTH);
number_key.one.addActionListener(this); //添加监听事件
number_key.two.addActionListener(this);
number_key.three.addActionListener(this);
number_key.four.addActionListener(this);
number_key.five.addActionListener(this);
number_key.six.addActionListener(this);
number_key.seven.addActionListener(this);
number_key.eight.addActionListener(this);
number_key.nine.addActionListener(this);
number_key.zero.addActionListener(this);
number_key.ce.addActionListener(this);
number_key.plus.addActionListener(this);
number_key.equal.addActionListener(this);
number_key.sub.addActionListener(this);
number_key.mul.addActionListener(this);
number_key.div.addActionListener(this);
number_key.b.addActionListener(this);
number_key.ds.addActionListener(this);
number_key.zf.addActionListener(this);
number_key.point.addActionListener(this);
setContentPane(pane);
pack(); //初始化窗体大小为正好盛放所有按钮
}
void jisuan(double a,double b,int c)
{
switch(symbol){
case 1://加法
{
ad=a+b;
result.text.setText(ad+ " ");
break;
}
case 2://减法
{
ad=a-b;
result.text.setText(String.valueOf(ad));
break;
}
case 3://乘法
{
ad=a*b;
result.text.setText(ad+ " ");
break;
}
case 4://除法
{
if(b!=0)
{
ad=a/b;
result.text.setText(ad+ " ");
}
else{
result.text.setText( "False! ");
//System.out.println( "False ");
}
System.out.println((int)b);
break;
}
}
num1=ad;
}
还没有发完 接着下面的回贴
[解决办法]
在事件处理的函数中,你的按钮0没有调用clicknum(0);给忘了吧。
[解决办法]
在0按键的代码中缺以下两句:
backspace=1;//退格有效
click_ysf=0;//标记上一次不是点击了运算符
也就是以下代码的前面:
}
else if(e.getSource()==number_key.ce){
[解决办法]
貌似楼主的程序根本就没有对0的操作。
2+0没有结果
6-0没有结果
......
不是只有/0的时候没报错误。
是所有的对0操作都没有进行.....
对于楼主的思路不了解,没办法帮忙改,楼主自己动手吧。