首页
社区
课程
招聘
[旧帖] [求助]简单的java求助 0.00雪花
发表于: 2011-12-9 20:13 1174

[旧帖] [求助]简单的java求助 0.00雪花

2011-12-9 20:13
1174
import   javax.swing.*;
import   java.awt.*;
import   java.awt.event.*;
public   class   Caculator   implements   ActionListener
{
      
        String   s= " ",s1=null;
        double   d1,d2;
JFrame   jf   =   new   JFrame( "小计算器by     Graduate ")   ;

JTextField   tf   =   new   JTextField();

public   void   init()//实现计算器界面
{
Container   c=jf.getContentPane();
tf.setHorizontalAlignment(JTextField.RIGHT);//文本框
c.add(tf,BorderLayout.NORTH);
JPanel   pn3   =   new   JPanel(new   BorderLayout());
c.add(pn3, BorderLayout.CENTER);

JPanel   pn2   =   new   JPanel();//功能键界面(清除键和关闭键)
pn2.setLayout(new   BorderLayout());

JPanel   pn1   =   new   JPanel();//运算界面

pn1.setLayout(new   GridLayout(4,4));

pn3.add(pn2, BorderLayout.NORTH);
pn3.add(pn1);

//设置按钮
JButton   b   =   new   JButton( "CLEAR ");
b.setToolTipText( "请按清除键! "); //设置清零键
b.setForeground(Color.RED);//设置字体颜色
b.setBackground(Color.YELLOW);//设置背景色
b.addActionListener(this);
pn2.add(b, BorderLayout.CENTER);
b   =   new   JButton( "OFF ");
b.setToolTipText( "请按退出键! ");//设置off键,点击退出应用程序 b.addActionListener(this);
b.setForeground(Color.RED);//字体颜色
b.setBackground(Color.ORANGE);//背景色
pn2.add(b, BorderLayout.EAST);
b   =   new   JButton( "1 ");//add   butten   1
b.addActionListener(this);
pn1.add(b);
b   =   new   JButton( "2 ");//add   butten   2
b.addActionListener(this);
pn1.add(b);
b   =   new   JButton( "3 ");//add   butten   3
b.addActionListener(this);
pn1.add(b);
b   =   new   JButton( "+ ");//add   butten   +
b.setForeground(Color.BLUE);//设置字体颜色
b.addActionListener(this);
pn1.add(b);
b   =   new   JButton( "4 ");//add   butten   4
b.addActionListener(this);
pn1.add(b);
b   =   new   JButton( "5 ");//add   butten   5
b.addActionListener(this);
pn1.add(b);
b   =   new   JButton( "6 ");//add   button   6
b.addActionListener(this);
pn1.add(b);
b   =   new   JButton( "- ");//add   button   -
b.setForeground(Color.BLUE);//设置字体颜色
b.addActionListener(this);
pn1.add(b);
b   =   new   JButton( "7 ");//add   button   7
b.addActionListener(this);
pn1.add(b);
b   =   new   JButton( "8 ");//add   button   8
b.addActionListener(this);
pn1.add(b);
b   =   new   JButton( "9 ");//add   button   9
b.addActionListener(this);
pn1.add(b);
b   =   new   JButton( "* ");//add   button   *
b.setForeground(Color.BLUE);//设置字体颜色
b.addActionListener(this);
pn1.add(b);
b   =   new   JButton( "0 ");//add   button   0
b.addActionListener(this);
pn1.add(b);
b   =   new   JButton( ". ");//add   button   .
b.addActionListener(this);
pn1.add(b);
b   =   new   JButton( "= ");//add   button   =
b.setForeground(Color.RED);//设置字体颜色
b.addActionListener(this);
pn1.add(b);
b   =   new   JButton( "\\ ");//add   button   \
b.setForeground(Color.BLUE);//设置字体颜色
b.addActionListener(this);
pn1.add(b);

jf.setSize(300,300);//设置大小
jf.setVisible(true);//设置为可视
}

//处理按钮按下时的动作,进行相应的处理
public   void   actionPerformed(ActionEvent   e)
{
                String   command   =   e.getActionCommand();
                tf.setText(tf.getText()+command);
                if(command.equals( "CLEAR "))   //清零键   按下时返回初始状态
                {
                s1=null;
                s= " ";
                        tf.setText( " ");//记录输入值的变量清空
                }
              
                else   if(command.equals( "OFF "))   System.exit(0);//off键   关闭应用程序
              
                else   if(!command.equals( "* ")&&!command.equals( "\\ ")
                      &&!command.equals( "+ ")&&!command.equals( "- ")
                      &&!command.equals( "= "))//判断输入是否为数字
                {
                if(s1==null)//判断输入是否为第一个
                        s1   =   command;
                        else   s1+=command;
        d1   =   Double.valueOf(s1);//字符串型转换为双精度型,还原输入数字
        try
        {
        if(s.equals( "+ "))   d1   =   d1+d2;//加法运算
        else   if(s.equals( "- "))   d1   =   d2-d1;//减法运算
        else   if(s.equals( "* "))   d1   =   d1*d2;//乘法运算
        else   if(s.equals( "\\ "))d1   =   d2/d1;//除法运算
        }
        catch(Exception   ex)
        {
        tf.setText( "Error ");//错误显示 "Error "
        System.out.println(ex.getMessage());
        }
        
              }

else   if(!command.equals( "= "))   //判断输入是否为+   -   *   \   
{
        s   =   command;
s1   =   null;
d2   =   d1;
}

else//输入=时,显示运算结果
{

tf.setText(tf.getText()+d1);

}

}

public   static   void   main(String   []   args)
{
      
new   Caculator().init();

}
}

为什么连续输入俩个数字时,中间会有空格,例如输入99,报错Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "9 9"

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 3
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
由于你的每一个数字按钮都是数字+空格,所以你按下数字的时候String   command   =   e.getActionCommand(); command=数字+空格,然后tf.setText(tf.getText()+command); tf的内容就是数字+空格了。
2011-12-9 23:36
0
游客
登录 | 注册 方可回帖
返回
//