发新话题
打印

JAVA初学者求助——计算器修改

JAVA初学者求助——计算器修改

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Calculator {
       
        public static void main(String[] args) {
                        new CalFrame();
        }
}
class CalFrame extends JFrame{
        JPanel fatherPanle=new JPanel();        //定义父面板
        JPanel textPanle=new JPanel();                //定义显示文本的面板
        JPanel butPanle=new JPanel();                //定义显示各个按钮的面板
        JPanel resultP=new JPanel();                //定义显示结果的面板
        JTextField text=new JTextField("Good Boy"); //定义文本用来存放结果
        JLabel lab=new JLabel("欢迎你来到我的计算器");         //定义欢迎的标题
        BorderLayout b=new BorderLayout();        //定义一个边框布局对象
        GridLayout g=new GridLayout(4,4);        //定义一个网格布局对象
        JButton but[]=new JButton[10];                //定义存放数字按钮的数组
        MyAction1 action1=new MyAction1();                //定义按钮发生的动作
        MyAction2 action2=new MyAction2();
        int start;
        boolean end;
        String command;
        String lastCommand;
        double result;
        public CalFrame(){                                                //构造函数
                numButtonValue();                                        //以下均为函数调用
                addButton();
                butPanle .add(comButtonValue("."));
                comButtonValue(".").addActionListener(action1);
                butPanle.add(comButtonValue("clean"));
                comButtonValue("clean").addActionListener(action2);
                butPanle .add(comButtonValue("+"));
                comButtonValue("+").addActionListener(action2);
                butPanle.add(comButtonValue("-"));
                comButtonValue("-").addActionListener(action2);
                butPanle.add(comButtonValue("*"));
                comButtonValue("*").addActionListener(action2);
                butPanle.add(comButtonValue("/"));
                comButtonValue("/").addActionListener(action2);
                addPToP();
                addTextToP();
                FatherPToJF();
                start=0;
                end=false;
                command="=";
                result=0;
        }
        public void addTextToP(){                        //定义函数将文本加入到文本面板中
                textPanle.add(lab);
                text.setBackground(Color .yellow );
                textPanle.add(text);
               
        }
        public void addPToP(){                                //定义函数将子面板添加到父面板中
                fatherPanle.setLayout(b);
                fatherPanle.add(textPanle ,BorderLayout.NORTH);
                fatherPanle.add(butPanle,BorderLayout.CENTER);
                fatherPanle.add(resultP.add(new JButton("=")),BorderLayout .SOUTH);
        }
        public void FatherPToJF(){                        //定义函数将父面板添加到框架中,并且设置框架
                this.getContentPane().add(fatherPanle);
                this.setSize(300,250);
                this.setLocation(400,400);
                this.setVisible(true);
                this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                this.setTitle("自编java小程序");
        }
        public void numButtonValue(){                        //定义函数给按钮赋值
                for(int x=0;x<10;x++){
                        but[x]=new JButton(String.valueOf(x));
                        but[x].setSize(50,40);
                }
        }
        public JButton comButtonValue(String c){ //定义函数加操作符按钮
                return new JButton(c);
        }
        public void  addButton(){                        //定义函数将按钮添加到按钮面板中
                butPanle.setLayout(g);
                for(int i=0;i<but.length;i++){
                butPanle.add(but);
                but.addActionListener(action1);
                }
        }
        class MyAction1 implements ActionListener{                //定义事件处理的子类
                public void actionPerformed(ActionEvent e1){//实现动作发生的方法
                        Object x=e1.getSource();
                                if(start==0){
                                        c();
                                        start=1;
                                }
                                if(x==but[0]){
                                        text.setText(text.getText()+but[0].getText());
                                }if(x==but[1]){
                                        text.setText(text.getText()+but[1].getText());
                                }if(x==but[2]){
                                        text.setText(text.getText()+but[2].getText());
                                }if(x==but[3]){
                                        text.setText(text.getText()+but[3].getText());
                                }if(x==but[4]){
                                        text.setText(text.getText()+but[4].getText());
                                }if(x==but[5]){
                                        text.setText(text.getText()+but[5].getText());
                                }if(x==but[6]){
                                        text.setText(text.getText()+but[6].getText());
                                }if(x==but[7]){
                                        text.setText(text.getText()+but[7].getText());
                                }if(x==but[8]){
                                        text.setText(text.getText()+but[8].getText());
                                }if(x==but[9]){
                                        text.setText(text.getText()+but[9].getText());
                                }if(e1.getActionCommand().equals(".")){
                                        text.setText(text.getText()+".");
                                }
                       
                }
        }
        class MyAction2 implements ActionListener{
                public void actionPerformed(ActionEvent e2){   //实现动作发生的方法
                       
                        if(start==1){
                                result=Double.parseDouble(text.getText());
                                c();}
                                if(e2.getActionCommand().equals("+")){
                                        command="+";end=true;
                                }if(e2.getActionCommand().equals("-")){
                                        command="-";end=true;
                                }if(e2.getActionCommand().equals("*")){
                                        command="*";end=true;
                                }if(e2.getActionCommand().equals("/")){
                                        command="/";end=true;
                                }
                                if(e2.getActionCommand().equals("=")&&end==true){
                                        jiSuan();
                                        start=0;
                                }
                        }
        }
        public void jiSuan(){
                double x=Double.parseDouble(text.getText());
                if(command=="+"){
                        result+=x;
                }else if(command=="-"){
                        result-=x;
                }else if(command=="*"){
                        result*=x;
                }else if(command=="/"){
                        result/=x;
                }
                text.setText(String.valueOf(result));
        }
        public void c(){
                text.setText("");
        }
}
只求心无愧!

TOP

he

hehe
只求心无愧!

TOP

只能编译

public void  addButton(){                        //定义函数将按钮添加到按钮面板中
                butPanle.setLayout(g);
                for(int i=0;i<but.length;i++){
                butPanle.add(but);     //这一句错误,but在这什么也不是,应该加的是but[i ]
                but.addActionListener(action1);   //改为 but[i ].addActionListener(action1);
             }
//改完上面2句可以编译通过,但具体功能实现不了。


[ 本帖最后由 jingfeng70 于 2008-6-19 09:44 编辑 ]

TOP

/*
程序:netice
时间:2008-6-18
此计算器说明:
优点:
        判断了输入的是否为数字,可以连续使用!
        判断了写未知的输入错误
缺点:
        只能在DOS下运行
        只能2个数之间的简单的+-×/运算
        仅仅是为了演示,所以精度为float型
        
扩展:
        若想输入多个运算符也能实现,算法跟下边类似。
        剩下的自己搞定吧,偶还有面试题要做。。。。
        用了2小时,DOS下不怎么好调试。
*/

import java.io.*;                           //导入IO包
class Select
{                                           //输入数据流的类
        String inputStr;
        float fResult;
        //提示部分
        boolean tishi(String zi) throws IOException
        {
            String isGoonStr;
            BufferedReader c=new BufferedReader(new InputStreamReader(System.in));
            System.out.print(zi);
            isGoonStr=c.readLine();
            if(isGoonStr.equals("1"))
                    return true;
            else
                     return false;
        }
        //计算机器主要算法
            boolean select(String zi) throws IOException
        {
            BufferedReader c=new BufferedReader(new InputStreamReader(System.in));
            System.out.print(zi);
            inputStr=c.readLine();
            //下面开始计算输入的计算式
            
            String numberStr1="";
            String numberStr2="";
            String operatorStr=null;
            float numberF1,numberF2;
            boolean bNum1=true;//是否为第一个运算符
            //判断是否为0.1类似数字,第一个数字为0则下个符号应该为“.”
            if(inputStr.charAt(0)=='0')
            {
                    if(inputStr.charAt(1)!='.')
                    return false;
            }
            //依次给数字1、数字2、运算符,进行赋值
            for(int i=0;i<inputStr.length();i++)
            {
                    switch(inputStr.charAt(i))
                    {
                            case '1':case '2':case '3':case '4':case '5':case '6':
                            case '7':case '8':case '9':case '0':case '.':
                                    if(bNum1)
                                    {
                                            numberStr1+=inputStr.substring(i,i+1);
                                    }
                                    else
                                    {
                                            numberStr2+=inputStr.substring(i,i+1);
                                    }
                                    break;
                            case '+':case '-':case '*':case '/':
                                    operatorStr=inputStr.substring(i,i+1);
                                    bNum1=false;
                                    break;
                            default:
                                    return false;
                           
                    }
            }
            //捕获未知的错误
            try
            {
                    //把字符串转换成数字
                    numberF1=Float.parseFloat(numberStr1);
                    numberF2=Float.parseFloat(numberStr2);
                    //计算出结果
                    switch(operatorStr.charAt(0))
                    {
                            case '+':
                                fResult=numberF1+numberF2;
                                    break;
                            case '-':
                                fResult=numberF1-numberF2;
                                    break;
                            case '*':
                                fResult=numberF1*numberF2;
                                    break;
                            case '/':
                                //除数为0时候
                                if(numberF2==0)
                                {
                                            System.out.print("除数不能为零!");
                                        return false;
                                }
                                fResult=numberF1/numberF2;
                                    break;
                    }
            }
            catch(Exception e)
            {
                    return false;
            }
            
            //打印结果
            System.out.print("              "+numberStr1+operatorStr+numberStr2+"="+fResult);
            return true;
        }
}
class calculator
{
        //主函数
        public static void main(String[]args) throws IOException
        {
                System.out.println("欢迎使用刘冰计算机器!");
                System.out.println("请先阅读操作流程:");
                System.out.println("提示输入运算式后:如下输入 数字1+数字2 回车 \n");
                Select s=new Select();
                int isGoon=1;
                while(isGoon==1)
                {
                        if(!s.select("请输入运算式:"))
                        {
                                System.out.println("输入非法!");

                        }
                        if(!s.tishi("\n是否继续使用计算器?  1:是       其他键:否\n"))
                        {
                                isGoon=2;
                        }
                        
                }
        }
}

[ 本帖最后由 netice 于 2008-6-19 17:34 编辑 ]

TOP

发新话题