⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 counter.java

📁 这是一个JAVA做的计算器程序 里面包含了计算器的基本功能
💻 JAVA
字号:
import java.awt.*;  //图形用户界面核心包,提供图形用户界面的类和接口;
import javax.swing.*;  //提供一组“轻量级”(全部是 Java 语言)组件;
import java.awt.event.*; //提供事件和监听器的类和接口;

class Counter extends WindowAdapter 
{ 
static JFrame f=new JFrame("计算器"); //带标题的框架构造方法,框架标题设置为“计算器”;
static JTextField text1=new JTextField(" "); //设置显示初值;
static String source=" "; //存储第一个运算的数字,转换为字符串存储;
static String cal=""; //存储运算符;
static String object=""; //存储第二个运算的数字;
 
static boolean flag=false; //控制输入的数字是连到当前数字后面还是重新输入的;
public void init() //构建计算器显示界面窗口;
{ 


Container c=f.getContentPane(); //实例化一个容器类;
JPanel pan1=new JPanel(); 
JButton b1=new JButton("1"); //定义按钮
JButton b2=new JButton("2"); 
JButton b3=new JButton("3"); 
JButton b4=new JButton("4"); 
JButton b5=new JButton("5"); 
JButton b6=new JButton("6"); 
JButton b7=new JButton("7"); 
JButton b8=new JButton("8"); 
JButton b9=new JButton("9"); 
JButton b0=new JButton("0"); 
JButton b11=new JButton("+"); 
JButton b12=new JButton("-"); 
JButton b13=new JButton("*"); 
JButton b14=new JButton("/"); 
JButton b15=new JButton("."); 
JButton b16=new JButton("%"); 
JButton b17=new JButton("P"); 
JButton b18=new JButton("√"); 
JButton b19=new JButton("!"); 
JButton b20=new JButton("="); 
JButton bclar=new JButton("清零"); 
text1.setHorizontalAlignment(JTextField.RIGHT); //设置水平对齐方式为右对齐;
c.add(text1,"North"); //将显示输出结果的文本框添加到北域;
c.add(pan1); 

qufan m=new qufan();//取反按钮的方法;
Num aa=new Num(); //数字类按钮;
Result re=new Result(); //“=”按钮;
Opertion op=new Opertion(); //运算按钮,如+、-、*等;
Clear cl=new Clear(); //清除键;

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); 
b0.addActionListener(aa); 
b11.addActionListener(op); 
b12.addActionListener(op); 
b13.addActionListener(op); 
b14.addActionListener(op); 
b16.addActionListener(op);
b17.addActionListener(op);
b18.addActionListener(op);
b19.addActionListener(m);
b20.addActionListener(re); 
b15.addActionListener(aa); 
bclar.addActionListener(cl); 

pan1.add(b1); //添加按钮;
pan1.add(b2); 
pan1.add(b3);
pan1.add(b11); 
pan1.add(b4);
pan1.add(b5); 
pan1.add(b6);
pan1.add(b12); 
pan1.add(b7);
pan1.add(b8); 
pan1.add(b9);
pan1.add(b13); 
pan1.add(b0);
pan1.add(b18); 
pan1.add(b16); 
pan1.add(b14); 
pan1.add(b15); 
pan1.add(b19); 
pan1.add(b17); 
pan1.add(b20); 
pan1.add(bclar); 
f.setSize(200,255); //设置框架尺寸;
f.setVisible(true); //显示窗体;
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//按关闭键后关闭;
}
 
class Num implements ActionListener //按数字按钮之后的处理方法
{ 
public void actionPerformed(ActionEvent e) 
{ 
String a=text1.getText(); //存储当前正在显示的内容,以字符串方式存储;
String s=e.getActionCommand(); //得到按下按钮之后的内容;
if(a.equals(" ")||a.equals("+")||a.equals("-")||a.equals("*")||a.equals("/")
               ||a.equals("%")||a.equals("P")||a.equals("M")||a.equals("√")) 
     text1.setText(s);//判断若为首次进行计算,或者运算符之后的输入,则显示对应的内容;
else { 
if(flag) 
{ 
text1.setText(s); //如果当前显示的是上次的运算结果,则应该重新开始;
flag=false; 
} 
else 
text1.setText(a+s); //否则连接到当前字符串后面;
} 
} 
} 
class Opertion implements ActionListener 
{ 
public void actionPerformed(ActionEvent e) 
{ 
cal=e.getActionCommand();//用cal储存运算符; 
source=text1.getText(); 
text1.setText(cal); //把运算符按钮的内容显示到文本框;
} 
} 
class Result implements ActionListener 
{ 
public void actionPerformed(ActionEvent e) 
{ 
 double num1; 
num1=Double.parseDouble(source); //把第一个数字转换为double型变量;
object=text1.getText(); 
double num2; 
num2=Double.parseDouble(object); //把第二个数字转换为double型变量;
double result=0; //保存运算结果;
if(cal.equals("+")) 
result=num1+num2; 
if(cal.equals("-")) 
result=num1-num2; 
if(cal.equals("*")) 
result=num1*num2; 

if(cal.equals("/"))//计算除法运算;
{
	if(num1!=0&&num2==0)
	{text1.setText("无穷大");
		return;
		}
		else if(num1==0&&num2==0)
		result=1;
		else
	result=num1/num2;
	}
if(cal.equals("P")) //计算x的y次方;
result=Math.pow(num1,num2); 
if(cal.equals("%")) 
result=num1%num2; 

 if(cal.equals("√")) //计算x的y次根号;
 {
 	   if(num1<0)
        {if(num1<0&&num2%2==0)//负数开偶次根号,提示出错;
      {
        text1.setText("本计算器暂不支持负数开偶次方");
        return ;
      }
       else  if (num1<0 && num2%2==1)//负数开根号;
      result=0-(Math.exp( 1/ num2 * Math.log(Math.abs(num1))));
      }
    
      else 
        result = (Math.exp( 1/ num2 * Math.log(num1)));
  }
String s1=Double.toString(result);//将计算结果转换为字符串存储,方便下面的输出; 
text1.setText(s1); 
flag=true; //完成一次运算,置为true;
} 
} 
class Clear implements ActionListener 
{ 
public void actionPerformed(ActionEvent e) 
{ 
text1.setText(" "); //按下清零键后,文本显示空白;
} 
} 

class qufan implements ActionListener 
{ 
public void actionPerformed(ActionEvent e) 
{ 
String huang=text1.getText();
text1.setText(" ");
text1.setText("-"+ huang ); //按下取反键后,输入的数字变为负数;
} 
} 

public static void main(String[] args) 
{ 
Counter count=new Counter(); 
count.init(); 
} 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -