您现在的位置是: 首页 > 数码科技 数码科技

java诺基亚5200手机计算器

ysladmin 2024-06-05 人已围观

简介java诺基亚5200手机计算器       大家好,今天我想和大家谈谈我对“java诺基亚5200手机计算器”的一些看法。为了让大家更好地理解这个问题,我将相关资料进行了分类,现在就让我们一起

java诺基亚5200手机计算器

       大家好,今天我想和大家谈谈我对“java诺基亚5200手机计算器”的一些看法。为了让大家更好地理解这个问题,我将相关资料进行了分类,现在就让我们一起来探讨吧。

1.用JAVA编写一个计算器

java诺基亚5200手机计算器

用JAVA编写一个计算器

       import java.awt.BorderLayout;

       import java.awt.Color;

       import java.awt.GridLayout;

       import java.awt.event.ActionEvent;

       import java.awt.event.ActionListener;

       import javax.swing.ImageIcon;

       import javax.swing.JButton;

       import javax.swing.JFrame;

       import javax.swing.JPanel;

       import javax.swing.JTextField;

       import javax.swing.SwingConstants;

       public class Jisuanqi extends JFrame implements ActionListener {

       /**

       *

       */

       private static final long serialVersionUID = 1L;

       Result result = new Result(); // 定义text的面板

       Number_Key number_key = new Number_Key(); // 定义按钮面板

       // 当点击按钮+、-、*、/时,com = true

       boolean com = false;

       // 当i=0时说明是我们第一次输入,字符串text不会累加

       int i = 0;

       // 存放text的内容

       String text = "";

       // 存放点击按钮+、-、*、/之前的数值

       double defbutton = 0;

       // +、-、*、/的代号分别为1,2,3,4

       int symbol = 0;

       // 构造函数

       Jisuanqi() {

       super("WangJiao"); // 设定标题

       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设定关闭窗体时退出程序

       JPanel pane = new JPanel(); // 定义主面板

       pane.setLayout(new BorderLayout());

       setBounds(380, 220, 30, 80); // 前两个参数是在屏幕上显示的坐标,后两个是大小

       // 替换图标

       ImageIcon icon = new ImageIcon("F:1.GIF");

       // Jisuanqi.class.getResource("APPLE.GIF")

       // );

       setIconImage(icon.getImage());

       pane.add(result, BorderLayout.NORTH);

       pane.add(number_key, BorderLayout.CENTER);

       pane.add(number_key.equal, BorderLayout.SOUTH);

       number_key.one.addActionListener(this); // 对1按钮添加监听事件

       number_key.two.addActionListener(this); // 对2按钮添加监听事件

       number_key.three.addActionListener(this); // 对3按钮添加监听事件

       number_key.four.addActionListener(this); // 对4按钮添加监听事件

       number_key.five.addActionListener(this); // 对5按钮添加监听事件

       number_key.six.addActionListener(this); // 对6按钮添加监听事件

       number_key.seven.addActionListener(this); // 对7按钮添加监听事件

       number_key.eight.addActionListener(this); // 对8按钮添加监听事件

       number_key.nine.addActionListener(this); // 对9按钮添加监听事件

       number_key.zero.addActionListener(this); // 对0按钮添加监听事件

       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.point.addActionListener(this); // 对.按钮添加监听事件

       setContentPane(pane);

       pack(); // 初始化窗体大小为正好盛放所有按钮

       }

       // 各个按钮触发的事件

       public void actionPerformed(ActionEvent e) {

       /*

       * 如果是点击数字按钮那么先要判断是否在此之前点击了+、-、*、/、=,如果是那么com=true 如果没有com=

       * false;或者是否点击数字键,如果是i = 1,如果没有 i = 0;

       */

       if (e.getSource() == number_key.one) {

       if (com || i == 0) {

       result.text.setText("1");

       com = false;

       i = 1;

       } else {

       text = result.text.getText();

       result.text.setText(text + "1");

       }

       } else if (e.getSource() == number_key.two) {

       if (com || i == 0) {

       result.text.setText("2");

       com = false;

       i = 1;

       } else {

       text = result.text.getText();

       result.text.setText(text + "2");

       }

       } else if (e.getSource() == number_key.three) {

       if (com || i == 0) {

       result.text.setText("3");

       com = false;

       i = 1;

       } else {

       text = result.text.getText();

       result.text.setText(text + "3");

       }

       } else if (e.getSource() == number_key.four) {

       if (com || i == 0) {

       result.text.setText("4");

       com = false;

       i = 1;

       } else {

       text = result.text.getText();

       result.text.setText(text + "4");

       }

       } else if (e.getSource() == number_key.five) {

       if (com || i == 0) {

       result.text.setText("5");

       com = false;

       i = 1;

       } else {

       text = result.text.getText();

       result.text.setText(text + "5");

       }

       } else if (e.getSource() == number_key.six) {

       if (com || i == 0) {

       result.text.setText("6");

       com = false;

       i = 1;

       } else {

       text = result.text.getText();

       result.text.setText(text + "6");

       }

       } else if (e.getSource() == number_key.seven) {

       if (com || i == 0) {

       result.text.setText("7");

       com = false;

       i = 1;

       } else {

       text = result.text.getText();

       result.text.setText(text + "7");

       }

       } else if (e.getSource() == number_key.eight) {

       if (com || i == 0) {

       result.text.setText("8");

       com = false;

       i = 1;

       } else {

       text = result.text.getText();

       result.text.setText(text + "8");

       }

       } else if (e.getSource() == number_key.nine) {

       if (com || i == 0) {

       result.text.setText("9");

       com = false;

       i = 1;

       } else {

       text = result.text.getText();

       result.text.setText(text + "9");

       }

       }

       /*

       * 对于0这个按钮有一定的说法,在我的程序里不会出现如00000这样的情况,我加了判断条件就是

       * 如果text中的数值=0就要判断在这个数值中是否有.存在?如果有那么就在原来数值基础之上添 加0;否则保持原来的数值不变

       */

       else if (e.getSource() == number_key.zero) { // result.text.getText()是得到text里内容的意思

       if (com || i == 0) {

       result.text.setText("0");

       com = false;

       i = 1;

       } else {

       text = result.text.getText();

       if (Float.parseFloat(text) > 0 || Float.parseFloat(text) < 0) { // Float.parseFloat(text)就是类型转换了,下面都是一样

       result.text.setText(text + "0");

       } else {

       if (text.trim().indexOf(".") == -1) {

       result.text.setText(text);

       } else {

       result.text.setText(text + "0");

       }

       }

       }

       } else if (e.getSource() == number_key.ce) {

       result.text.setText("0");

       i = 0;

       com = true;

       // text = "";

       defbutton = 0;

       }

       /*

       * 本程序不会让一个数值中出现2个以上的小数点.具体做法是:判断是否已经存在.存在就不添加, 不存在就添加.

       */

       else if (e.getSource() == number_key.point) {

       if (com || i == 0) {

       result.text.setText("0.");

       com = false;

       i = 1;

       } else {

       text = result.text.getText();

       if (text.trim().indexOf(".") == -1) {

       result.text.setText(text + ".");

       } else {

       result.text.setText(text);

       }

       }

       } // 获得点击+之前的数值

       else if (e.getSource() == number_key.plus) {

       com = true;

       i = 0;

       defbutton = Double.parseDouble(result.text.getText());

       symbol = 1;

       } // 获得点击-之前的数值

       else if (e.getSource() == number_key.sub) {

       com = true;

       i = 0;

       defbutton = Double.parseDouble(result.text.getText());

       symbol = 2;

       } // 获得点击*之前的数值

       else if (e.getSource() == number_key.mul) {

       com = true;

       i = 0;

       defbutton = Double.parseDouble(result.text.getText());

       System.out.println(defbutton);

       symbol = 3;

       } // 获得点击/之前的数值

       else if (e.getSource() == number_key.div) {

       com = true;

       i = 0;

       defbutton = Double.parseDouble(result.text.getText());

       symbol = 4;

       } else if (e.getSource() == number_key.equal) {

       switch (symbol) {

       case 1: { // 计算加法

       double ad = defbutton

       + Double.parseDouble(result.text.getText());

       result.text.setText(ad + "");

       i = 0;

       text = "";

       break;

       }

       case 2: { // 计算减法

       double ad = defbutton

       - Double.parseDouble(result.text.getText());

       result.text.setText(String.valueOf(ad));

       i = 0;

       text = "";

       break;

       }

       case 3: { // 计算乘法

       double ad = defbutton

       * Double.parseDouble(result.text.getText());

       result.text.setText(ad + "");

       i = 0;

       text = "";

       break;

       }

       case 4: { // 计算除法

       double ad = defbutton

       / Double.parseDouble(result.text.getText());

       result.text.setText(ad + "");

       i = 0;

       text = "";

       break;

       }

       }

       System.out.println(com);

       }

       System.out.println(result.text.getText());

       }

       @SuppressWarnings("deprecation")

       public static void main(String[] args) {

       Jisuanqi loveyou = new Jisuanqi();

       loveyou.show();

       }

       }

       // 计算器数字按钮定义面板

       class Number_Key extends JPanel {

       /**

       *

       */

       private static final long serialVersionUID = 1L;

       JButton zero = new JButton("0"); // 数字键0

       JButton one = new JButton("1"); // 数字键1

       JButton two = new JButton("2"); // 数字键2

       JButton three = new JButton("3"); // 数字键3

       JButton four = new JButton("4"); // 数字键4

       JButton five = new JButton("5"); // 数字键5

       JButton six = new JButton("6"); // 数字键6

       JButton seven = new JButton("7"); // 数字键7

       JButton eight = new JButton("8"); // 数字键8

       JButton nine = new JButton("9"); // 数字键9

       JButton plus = new JButton("+");

       JButton sub = new JButton("-");

       JButton mul = new JButton("*");

       JButton div = new JButton("/");

       JButton equal = new JButton("=");

       JButton ce = new JButton("清零"); // 置零键

       JButton point = new JButton(".");

       Number_Key() {

       setLayout(new GridLayout(4, 4, 1, 1)); // 定义布局管理器为网格布局

       setBackground(Color.blue); // 设置背景颜色

       // 添加按钮

       add(one);

       add(two);

       add(three);

       add(four);

       add(five);

       add(six);

       add(seven);

       add(eight);

       add(nine);

       add(zero);

       add(plus);

       add(sub);

       add(mul);

       add(div);

       add(point);

       add(equal);

       add(ce);

       }

       }

       // 计算器显示结果的窗体

       class Result extends JPanel {

       /**

       *

       */

       private static final long serialVersionUID = 1L;

       // text先是输入和结果

       JTextField text = new JTextField("0");

       @SuppressWarnings("deprecation")

       Result() { // 讲输入的数字或得到的结果在text的右边显示

       text.setHorizontalAlignment(SwingConstants.RIGHT);

       text.enable(false); // 文本框不能编辑

       setLayout(new BorderLayout()); // 设定布局管理器边框布局

       add(text, BorderLayout.CENTER); // text放置在窗体的中间

       }

       }

       直接复制 保存成Jisuanqi .java可以直接运行了

       class Calculator extends WindowAdapter implements ActionListener//创建Calculator类, 实现ActionListener接口.

       {

        //result代表上一次运算结果;data1代表当前文本框内显示的数,radixPointDepth代表小数位数

        private double result=0,data1=0,radixPointDepth=3;

        //resultIndicate 代表是否敲击了等号,要求结果

        //radixPointIndicate代表是否敲击了小数点

        private boolean radixPointIndicate=false,resultIndicate=false;

        private char prec='+';//代表当前运算符

        private JFrame f;//创建窗口

        private TextField tf;//创建文本框,用于存放结果

        private Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17;//创建按钮

        private Panel p;//创建/面板容器

       public void init()

        {

        f=new JFrame("计算器");

        p=new Panel();//运算界面p

        p.setLayout(new GridLayout(4,4)); // 设置p的布局为GridLayout,四行四列

        tf=new TextField(30);

        //实例化按钮

        b1=new Button("7");

        b2=new Button("8");

        b3=new Button("9");

        b4=new Button("+");

        b5=new Button("4");

        b6=new Button("5");

        b7=new Button("6");

        b8=new Button("-");

        b9=new Button("1");

        b10=new Button("2");

        b11=new Button("3");

        b12=new Button("*");

        b13=new Button("0");

        b14=new Button(".");

        b15=new Button("=");

        b16=new Button("/");

        b17=new Button("清零");

        f.add(tf,"North"); //把文本区域添加到框架的上方

        f.add(p,"Center"); //把面版添加到框架的中间

        f.add(b17,"South"); //把按钮(清零)添加到框架的下方

        //把按钮添加到面版上

        p.add(b1);

        p.add(b2);

        p.add(b3);

        p.add(b4);

        p.add(b5);

        p.add(b6);

        p.add(b7);

        p.add(b8);

        p.add(b9);

        p.add(b10);

        p.add(b11);

        p.add(b12);

        p.add(b13);

        p.add(b14);

        p.add(b15);

        p.add(b16);

        //为按钮添加监听

        b1.addActionListener(this);

        b2.addActionListener(this);

        b3.addActionListener(this);

        b4.addActionListener(this);

        b5.addActionListener(this);

        b6.addActionListener(this);

        b7.addActionListener(this);

        b8.addActionListener(this);

        b9.addActionListener(this);

        b10.addActionListener(this);

        b11.addActionListener(this);

        b12.addActionListener(this);

        b13.addActionListener(this);

        b14.addActionListener(this);

        b15.addActionListener(this);

        b16.addActionListener(this);

        b17.addActionListener(this);

        f.addWindowListener(this); //为框架添加监听

        f.setSize(300,190);//设置框架的大小

        f.setVisible(true);//设置框架为可见

        }

        //监听程序 ,监听actionEvent事件

        public void actionPerformed(ActionEvent e)

        {

        String s;

        s=e.getActionCommand(); //s存放敲击的命令字符串

        //SWITCH开关

        switch(s.charAt(0))

        {

        case '0':

        case '1':

        case '2':

        case '3':

        case '4':

        case '5':

        case '6':

        case '7':

        case '8':

        case '9'://按了“0-9”,就执行下面

        if(resultIndicate) //如果敲过等号,直接敲数字,则代表一个新运算开始了,所有内容初始化

        {

        result=0;

        data1=0;

        prec='+';

        }

        Integer Int1=new Integer(s);

        if(radixPointIndicate) //如果敲击过小数点

        {

        radixPointDepth=radixPointDepth/10;

        data1=data1+(Int1.intValue())*radixPointDepth;

        }

        else

        {

        data1=data1*10+(Int1.intValue());

        }

        Double displayNumber=new Double(data1);

        tf.setText(displayNumber.toString());

        resultIndicate=false; //只要敲击了数字键,就代表新的结果还没有算出来,所以为false

        break;

        case '+':

        case '-':

        case '*':

        case '/':

        case '='://按了“+、-、*、/”,执行下面

        if(s.charAt(0)!='='&&resultIndicate)

        //如果敲击+、-、*、/,并且已经计算过结果,则取新的操作符,所以为false;代表连续运算

        //prec存放新敲击的运算符

        {

        prec=s.charAt(0);

        resultIndicate=false;

        }

        else

        {

        //用SWITCH开关运算出执行了“+、-、*、/”的结果

        switch(prec)

        {

        case '+':

        result=result+data1;

        break;

        case '-':

        result=result-data1;

        break;

        case '*':

        result=result*data1;

        break;

        case '/':

        result=result/data1;

        break;

        }

        }

        radixPointIndicate=false; //如果敲击运算符或者=,则认为一个运算数的终结;所以小数点要清空

        radixPointDepth=1;

        displayNumber=new Double(result); //将最新的计算结果显示在文本框内

        tf.setText(displayNumber.toString());

        //监听是否按了“=”

        if(s.charAt(0)!='=') //如果没有敲等号,则敲了+、-、*、/,那么data1清空

        {

        data1=0;

        prec=s.charAt(0);

        }

        else

        {

        resultIndicate=true; //resultIndicate只有当敲击了等号,才为true,否则为false

        }

        break;

        case '.':

        radixPointIndicate=true;

        break;

        }

        //监听是否按了为“清零”,是则对各数据清零

        if(s.equals("清零"))

        {

        result=0;

        data1=0;

        radixPointDepth=1;

        tf.setText("");

        }

        }

       好了,今天我们就此结束对“java诺基亚5200手机计算器”的讲解。希望您已经对这个主题有了更深入的认识和理解。如果您有任何问题或需要进一步的信息,请随时告诉我,我将竭诚为您服务。