首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

100分——很简单的程序,出了点异常,请大家帮帮忙

2011-12-02 
100分——很简单的程序,出了点错误,请大家帮帮忙!这是一个很简单的计算器,当除数为0时为什么不能作出错误提

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操作都没有进行.....
对于楼主的思路不了解,没办法帮忙改,楼主自己动手吧。

热点排行