ZBLOG

import java.awt.BorderLayout; import java.awt.Button; import java.awt.Frame; import java.awt.GridLayout; import java.awt.Panel; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Calc...

// 导入必要的类 import java.awt.BorderLayout; import java.awt.Button; import java.awt.Frame; import java.awt.GridLayout; import java.awt.Panel; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;

// 创建计算器类 public class Calculator {     // 声明窗口、面板和文本框等组件     Frame f = new Frame(“计算器”);     Panel p1 = new Panel();     Panel p2 = new Panel();     TextField tf = new TextField(30);     // 声明数字按钮和运算符按钮     Button b0 = new Button(“1”);     Button b1 = new Button(“2”);     Button b2 = new Button(“3”);     Button b3 = new Button(“/”);     Button b4 = new Button(“4”);     Button b5 = new Button(“5”);     Button b6 = new Button(“6”);     Button b7 = new Button(“*”);     Button b8 = new Button(“7”);     Button b9 = new Button(“8”);     Button b10 = new Button(“9”);     Button b11= new Button(“-”);     // 清零按钮和结果按钮  Button b12 = new Button(“0”);  Button b13=  new Button(“c”);  Button b14= new Button(“+”);   Button b15= new Button(“=”);      // 声明其他功能按钮:sin, cos, tan 和 log  Button  b16=  new  Button (“sin”);   Button  b17=  new  Button (“cos”);   Button  b18=  new  Button (“tan”);   Button  b19=  new  Button (“log”);     // 创建一个 ActionListener 对象     A aa = new A();

    // 创建 ActionListener 类,实现计算器的基本功能     class A implements ActionListener{         @Override         public void actionPerformed(ActionEvent e) {             // 获取按钮上的文本信息             String s = e.getActionCommand();             if(s.equals(“c”)) { // 清零操作                 tf.setText(“”);             }else if(s.equals(“=”)) { // 计算结果操作                 try {                     String str = tf.getText().trim();                     double result = 0.0;

            // 根据运算符进行相应的计算操作
            if(str.contains("+")) {
                String num1 = str.substring(0,str.indexOf("+")).trim();
                String num2 = str.substring(str.indexOf("+")+1).trim();
                result = Double.parseDouble(num1)+Double.parseDouble(num2);
            }else if(str.contains("-")) {
                String num1 = str.substring(0,str.indexOf("-")).trim();
                String num2 = str.substring(str.indexOf("-")+1).trim();
                result = Double.parseDouble(num1)-Double.parseDouble(num2);
            }else if(str.contains("*")) {
                String num1 = str.substring(0,str.indexOf("*")).trim();
                String num2 = str.substring(str.indexOf("*")+1).trim();
                result = Double.parseDouble(num1)*Double.parseDouble(num2);
            }else if(str.contains("/")) {
                String num1 = str.substring(0,str.indexOf("/")).trim();
                String num2 = str.substring(str.indexOf("/")+1).trim();
                if(num2.equals("0")) { // 分母不能为零的情况
                    tf.setText("分母不能为0");
                    return;
                }
                result = Double.parseDouble(num1)/Double.parseDouble(num2);
            }
            // 将计算结果显示在文本框中

                    tf.setText(String.valueOf(result));                 }catch(Exception exception) {                     tf.setText(“输入有误”);                 }

        }else if(s.equals("sin")) { // 计算 sin 值的操作
            try {
                String str = tf.getText().trim();
                double num = Double.parseDouble(str);
                double result = Math.sin(num * Math.PI / 180); // 将角度转化为弧度进行计算
                tf.setText(String.valueOf(result));
            }catch(Exception exception) {
                tf.setText("输入有误");
            }
        }else if(s.equals("cos")) { // 计算 cos 值的操作
            try {
                String str = tf.getText().trim();
                double num = Double.parseDouble(str);
                double result = Math.cos(num * Math.PI / 180); // 将角度转化为弧度进行计算
                tf.setText(String.valueOf(result));
            }catch(Exception exception) {
                tf.setText("输入有误");
            }
        }else if(s.equals("tan")) { // 计算 tan 值的操作
            try {
                String str = tf.getText().trim();
                double num = Double.parseDouble(str);
                double result = Math.tan(num * Math.PI / 180); // 将角度转化为弧度进行计算
                tf.setText(String.valueOf(result));
            }catch(Exception exception) {
                tf.setText("输入有误");
            }
        }else if(s.equals("log")) { // 计算 log 值的操作
            try {
                String str = tf.getText().trim();
                double num = Double.parseDouble(str);
                double result = Math.log(num);
                tf.setText(String.valueOf(result));
            }catch(Exception exception) {
                tf.setText("输入有误");
            }
        } else if (Character.isDigit(s.charAt(0))) { // 限制只能输入数字

                tf.setText(tf.getText() + s);             }         }     }

    // 初始化方法,用于创建界面和添加事件监听器等操作     void init() {         p1.add(tf); // 将文本框添加到第一个面板中         p2.setLayout(new GridLayout(5,4,5,5)); // 设置第二个面板的布局为网格布局         p2.add(b1); // 将数字按钮和运算符按钮添加到第二个面板中

    p2.add(b2);
    p2.add(b3);
    p2.add(b0);
    p2.add(b4);
    p2.add(b5);
    p2.add(b6);
    p2.add(b7);
    p2.add(b8);
    p2.add(b9);
    p2.add(b10);
    p2.add(b11);
    // 添加其他功能按钮 
  	p2. add (b12);   
  	p2. add (b13);   
  	p2. add (b14);   
  	p2. add (b15);     
	p3. add (b16);   
	p3. add (b17);  
	p3. add (b18);  
	p3. add (b19);

    b0.addActionListener(aa); // 为数字按钮和运算符按钮添加 ActionListener 监听器
    b1.addActionListener(aa);
    b2.addActionListener(aa);
    b3.addActionListener(aa);
    b4.addActionListener(aa);
    b5.addActionListener(aa);
    b6.addActionListener(aa);
    b7.addActionListener(aa);
    b8.addActionListener(aa);
    b9.addActionListener(aa);
    b10.addActionListener(aa);
    b11.addActionListener(aa);	
    // 添加其他功能按钮的事件监听器 
  	b12. addActionListener (aa);   
  	b13. addActionListener (aa);   
  	b14. addActionListener (aa);   
  	b15. addActionListener (aa);     
	b16. addActionListener (aa);   
	b17. addActionListener (aa);  
	b18. addActionListener (aa);  
	b19. addActionListener (aa);

        f.add(p1,BorderLayout.NORTH); // 将第一个面板添加到窗口的北部         f.add(p2,BorderLayout.CENTER);// 将第二个面板添加到窗口的中间位置         f.setSize(300,250);// 设置窗口大小和可见性等属性         f.setVisible(true);     }

    public static void main(String[] args) {         new Calculator().init(); // 创建计算器对象并调用初始化方法进行操作     } }

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:http://sdn.0voice.com/?id=1149

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?