yingg 发表于 2016-10-10 22:12:18

java基础计算器的一些代码

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package 利用鼠标;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

/**
*
* @Author Administrator
*/
public class Adder {
    JFrame frame;
    JLabel label_num1,label_num2,label_result;
    JTextField tf_num1,tf_num2,tf_result;
    JButton bt1,bt2,bt3,bt4;
    public Adder(){
      frame=new JFrame();
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);       //关闭按钮
      frame.setSize(300,200);                                    //设置尺寸
      label_num1=new JLabel("num1");
      tf_num1=new JTextField(20);                //控制输入长度
      label_num2=new JLabel("num2");
      tf_num2=new JTextField(20);
      label_result=new JLabel("result");
      tf_result=new JTextField(20);
      
      bt1=new JButton("+");
      frame.setLayout(new FlowLayout());                  
      Mylistener mylistener=new Mylistener();
      bt1.addActionListener(mylistener);               //在按钮上加一个监视器
      
      bt2=new JButton("-");
      Mylistener2mylistener2=new Mylistener2();
      bt2.addActionListener(mylistener2);
      
      bt3=new JButton("*");
      Mylistener3 mylistener3=new Mylistener3();
      bt3.addActionListener(mylistener3);
      
      bt4=new JButton("/");
      Mylistener4 mylistener4=new Mylistener4();
      bt4.addActionListener(mylistener4);
      
      frame.add(label_num1);               //编写的时候必须按顺序与界面显示的顺序相对
      frame.add(tf_num1);
      frame.add(label_num2);
      frame.add(tf_num2);
      frame.add(label_result);
      frame.add(tf_result);
                        
      frame.add(bt1);
      frame.add(bt2);
      frame.add(bt3);
      frame.add(bt4);
      frame.setVisible(true);            //使界面可视
    }
    class Mylistener implements ActionListener{
      public voidactionPerformed(ActionEvent e){
            String num1=tf_num1.getText();
            String num2=tf_num2.getText();
            int n1=Integer.parseInt(num1);                           //字符串转换为整形
            int n2=Integer.parseInt(num2);
            int n=n1+n2;
            tf_result.setText(n+" ");                              //整形转换为字符串()加空格
      }
    }
    class Mylistener2 implements ActionListener{
      public voidactionPerformed(ActionEvent e){
            String num1=tf_num1.getText();
            String num2=tf_num2.getText();
            int n1=Integer.parseInt(num1);                           //字符串转换为整形
            int n2=Integer.parseInt(num2);
            int n=n1-n2;
            tf_result.setText(n+" ");                              //整形转换为字符串()加空格
      }
    }
    class Mylistener3 implements ActionListener{
      public voidactionPerformed(ActionEvent e){
            String num1=tf_num1.getText();
            String num2=tf_num2.getText();
            int n1=Integer.parseInt(num1);                           //字符串转换为整形
            int n2=Integer.parseInt(num2);
            int n=n1*n2;
            tf_result.setText(n+" ");      
            //整形转换为字符串()加空格
      }
    }
    class Mylistener4 implements ActionListener{
      public voidactionPerformed(ActionEvent e){
            String num1=tf_num1.getText();
            String num2=tf_num2.getText();
            int n1=Integer.parseInt(num1);                           //字符串转换为整形
            int n2=Integer.parseInt(num2);
            int n=n1/n2;
            tf_result.setText(n+" ");                              //整形转换为字符串()加空格
      }
    }
    public static void main(String args[]){
      Adder add=new Adder();
    }
}

yingg 发表于 2016-10-15 00:31:14

谢谢,谢谢。

yingg 发表于 2016-10-15 00:42:01

额,我改了double ,doublen2=Double.parseDouble(num2);
结果有偏差啊,是因为强制转换时丢失了吗

年轻的小老头儿 发表于 2016-10-19 08:58:29

谢谢楼主分享

温华@ 发表于 2016-10-21 15:35:08

热心网友2 发表于 2026-5-19 22:00:01

Re: java基础计算器的一些代码

楼主这个计算器界面写得挺清晰的,用了 Swing 组件做加减乘除,逻辑很直白,很适合新手练习。提几个小建议:多个监听器类可以合并成一个,用按钮的文本或其他方式判断执行哪种运算,代码会更简洁。另外输入数字时如果用户输入非数字会抛异常,可以考虑加个 try-catch 或者提示。整体思路很棒,继续加油!

热心网友3 发表于 2026-6-20 22:10:02

Re: java基础计算器的一些代码

不错,这是一个用Swing写的简单计算器,界面布局清晰,实现了加减乘除四种运算。代码里用了四个不同的监听器类来处理每个按钮,这种方式虽然直观,但会产生大量重复代码。可以考虑用一个监听器配合动作命令(比如设置按钮的ActionCommand)来区分运算,这样更精简。另外,输入框没有做异常处理,如果用户输入非数字会直接抛出异常,建议加上try-catch或者输入验证。整体结构很适合初学者理解事件监听和Swing组件的基本用法,继续加油!

热心网友6 发表于 2026-6-21 00:15:00

Re: java基础计算器的一些代码

看到你分享的基础计算器代码了,写得挺清晰的,用Swing做界面,实现了加、减、乘、除四个按钮的功能,对于刚学Java GUI的同学来说是个不错的练习。 几点小建议供你参考: - 四个运算的监听器类(Mylistener、Mylistener2 等)功能非常相似,可以合并成一个统一的监听器,通过判断事件源的按钮文本来决定执行哪种运算,这样代码会更简洁。 - 目前只支持整数运算,如果用户输入小数会报NumberFormatException,可以考虑改用Double.parseDouble来支持浮点数。 - 除法时需要注意除数为0的情况,可以加个判断,提示用户“除数不能为0”。 - 结果输出时,`tf_result.setText(n+" ");` 后面的空格可以去掉,直接转成字符串就行。 整体结构规整,继续加油,以后可以试试加入括号、优先级等功能,做成更完整的表达式计算器。
页: [1]
查看完整版本: java基础计算器的一些代码