import java.awt.*;//AWT核心包
import java.awt.event.*;//提供事件类和监听器
public class Counter extends Frame implementsActionListener
{
TextField t=newTextField("");//文本框
Panel p1=newPanel();//new一个panel,用于存放数字键和符号键。
Panel p2=newPanel();//new一个panel,用于存放开方、平方、和清除键。
Button[] b=newButton[10];//实例化Button对象
Button bAdd=newButton("加");
Button bSub=newButton("减");
Button bMul=newButton("乘以");
Button bPoint=newButton(".");
Button bDiv=newButton("除以");
Button bEqual=newButton("等於");
Button bSqrt=newButton("开方");
Button bPow=newButton("平方");
Button bNull=newButton("清除");
Stringstr1=""; //str1和str2存放两个输入的数
Stringstr2="";
Stringoperator=null; //存放加减乘除以及开平方的符号
booleanfirst=true; //检验输入的是否为第一个数
intcountOper=0; //累计输入符号的个数,连加连减等操作中会用到
doubleresult=0.0; //暂存结果
double num1=0.0,num2=0.0; //两个输入的数做运算时转化为double存放
booleanerror=false; //检验除数是否为0
//构造方法
public Counter()
{
Frame s=newFrame("计算器");//创建Frame
for(inti=0;i<10;i++)//利用for循环将数字键添加进p1中
{
b[i]=newButton(String.valueOf(i));
p1.add(b[i]);
b[i].setActionCommand("number");
b[i].setForeground(new Color(150,20,20));
b[i].addActionListener(this);//调用addActionListener()方法注册事件监听器
}
p1.add(bPoint);
bPoint.setActionCommand("number");
p1.add(bAdd); //数字键,符号键放置在panel的p1中
p1.add(bSub);
p1.add(bMul);
p1.add(bDiv);
p1.add(bEqual);
p2.add(bSqrt);//开方键,平方键,清除键放置在panel的p2中
p2.add(bPow);
p2.add(bNull);
bAdd.setActionCommand("oper");
bSub.setActionCommand("oper");
bMul.setActionCommand("oper");
bDiv.setActionCommand("oper");
bAdd.setForeground(Color.red);//为组键设计颜色
bSub.setForeground(Color.red);
bMul.setForeground(Color.red);
bDiv.setForeground(Color.red);
bPoint.setForeground(Color.black);
bEqual.setForeground(Color.red);
bSqrt.setForeground(Color.blue);
bPow.setForeground(Color.blue);
bNull.setForeground(Color.blue);
bAdd.addActionListener(this);//调用addActionListener()方法注册事件监听器
bSub.addActionListener(this);
bMul.addActionListener(this);
bDiv.addActionListener(this);
bPoint.addActionListener(this);
bEqual.addActionListener(this);
bSqrt.addActionListener(this);
bPow.addActionListener(this);
bNull.addActionListener(this);
p1.setLayout(newGridLayout(4,4,5,5));//网格布局管理器,把容器根据行数和列数分成同样大小的单元,
//每个单元可容纳一个组件,并且此组件会填满网格单元,不能控
//制其占据网格的大小。4、4为网格的行、列数。5、5为组建之间的
//间距
p2.setLayout(newFlowLayout());//用FlowLayout布局管理器将组建默认剧中排放,默认间隙为5个像素
add(t,"North"); //frame的north放置输入框,panel放置在center和south
add(p1,"Center");//将p1添加到Center中
add(p2,"South");//将p2添加到South中
setLocation(400,200);//设计按钮尺寸
setSize(200,200);//设计窗口尺寸
setBackground(newColor(20,200,10));//设置Frame的背景,默认为白色
setVisible(true);//设置Frame设置为可见
addWindowListener(new WindowAdapter(){//关闭窗口功能
public voidwindowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
//实现接口ActionListener
public voidactionPerformed(ActionEvent e)
{
Buttontemp=(Button)e.getSource();
if(e.getActionCommand().equals("number"))
{
if(first)
{
str1=str1+temp.getLabel();
t.setText(str1);//将输入的str1显示在文本框中
}
else
{
str2=str2+temp.getLabel();
t.setText(str2);//将输入的str2显示在文本框中
}
}
elseif(e.getActionCommand().equals("oper"))
{
if(str1=="") //如果还没有输入数就点击运算符执行if
{
countOper=0;//若此,则将计数清零
first=true;
}
else
{
countOper++;//计算输入符号的个数
if(countOper>1)//若输入的符号个数多余一个,则可以进行计算
{
getResult();
}
operator=temp.getLabel();//存放加减乘除以及开方、平方的符号
first=false;
}
}
elseif(e.getActionCommand().equals("开方"))
{
doubled=Math.sqrt(Double.parseDouble(str1));
str1=String.valueOf(d);//将计算出来的结果再次传给str1,为连计算准备
t.setText(String.valueOf(d));//将计算出来的结果传至文本框中
first=false;//置为false,即已输入第一个数
}
elseif(e.getActionCommand().equals("平方"))
{
doublef=Math.pow(Double.parseDouble(str1),2);
str1=String.valueOf(f);
t.setText(String.valueOf(f));
first=false;
}
elseif(e.getActionCommand().equals("清除"))
{
str1="";//清空
str2="";
t.setText("");//将文本框清空
countOper=0;//将按键计数器清零
first=true;
error=false;
}
elseif(e.getActionCommand().equals("等於"))
{
if((str1=="")||(str2=="")) //两个数没有输全就点击等号,执行if
{
countOper=0;//将按键计数器清零
first=true;
}
else
{
getResult();
countOper=0;
}
}
}
//运算结果的方法
public voidgetResult()
{
num1=Double.parseDouble(str1);
num2=Double.parseDouble(str2);
if(operator.equals("加"))
{
result=num1+num2;
}
elseif(operator.equals("减"))
{
result=num1-num2;
}
elseif(operator.equals("乘以"))
{
result=num1*num2;
}
elseif(operator.equals("除以"))
{
if(num2==0.0) //除数为0的处理方法
{
error=true;
}
else
{
result=num1/num2;
}
}
if(error)
{
t.setText("error");
}
else
{
t.setText(String.valueOf(result));
str1=String.valueOf(result); //运算后把结果放入str1中,str2清空,为连加连减等操作做准备
str2="";
}
}
//主方法
public static voidmain(String[] args)
{
new Counter();//创建一个对象"计算器"
}
}
importjava.awt.*;
import java.awt.event.*;
import javax.swing.*;
class CalculatorPanel extendsJPanel
implements ActionListener
{ publicCalculatorPanel()
{ setLayout(new BorderLayout());
display = newJTextField("0");
display.setEditable(false);
add(display,"North");
JPanel p =new JPanel();
p.setLayout(newGridLayout(4, 4));
String buttons ="789/456*123-0.=+";
for (int i= 0; i < buttons.length(); i++)
addButton(p,buttons.substring(i, i +1));
add(p, "Center");
}
private void addButton(Container c,String s)
{ JButtonb = newJButton(s);
c.add(b);
b.addActionListener(this);
}
public voidactionPerformed(ActionEventevt)
{ Strings = evt.getActionCommand();
if ('0' <=s.charAt(0) && s.charAt(0)<= '9'
|| s.equals("."))
{ if (start)display.setText(s);
elsedisplay.setText(display.getText()+ s);
start = false;
}
else
{ if (start)
{ if (s.equals("-"))
{ display.setText(s); start= false; }
else op= s;
}
else
{calculate(Double.parseDouble(display.getText()));
op = s;
start = true;
}
}
}
public voidcalculate(double n)
{ if(op.equals("+"))arg += n;
else if (op.equals("-")) arg-= n;
else if(op.equals("*"))arg *= n;
else if (op.equals("/")) arg/= n;
else if (op.equals("=")) arg= n;
display.setText(""+ arg);
}
private JTextFielddisplay;
private double arg= 0;
private String op= "=";
private boolean start= true;
}
public classCalculatorApplet extends JApplet
{ publicvoid init()
{ ContainercontentPane = getContentPane();
contentPane.add(newCalculatorPanel());
}
}
分享到:
相关推荐
当提到“计算器代码 js + html”,我们指的是使用这两种语言来创建一个交互式的在线计算工具。在这个特定的例子中,我们有三个计算器:房贷计算器、公积金计算器和车贷计算器。这些工具通常用于帮助用户估算他们的...
java计算器代码,初学者专用java计算器代码,初学者专用java计算器代码,初学者专用java计算器代码,初学者专用java计算器代码,初学者专用java计算器代码,初学者专用java计算器代码,初学者专用
【基于Android Studio 开发计算器代码】的开发是一个深入理解Android应用程序设计和编程的重要实践过程。在Android Studio中创建一个计算器应用,主要涉及以下几个关键知识点: 1. **Android Studio环境搭建**:...
Qt 简易计算器代码详解 本资源是关于 Qt 简易计算器代码的详细解释,涵盖了计算器的设计、实现和相关技术要点。 标题解释 Qt 简易计算器代码.doc 文件提供了一个完整的计算器程序代码,使用 Qt 框架开发,实现了...
在提供的压缩文件"JAVA计算器代码"中,可能包含了实现上述功能的源代码文件。你可以通过阅读这些文件来学习具体的实现细节,包括类的定义、方法的实现以及如何处理用户输入和输出。通过分析和理解这些代码,你将能...
标题中的“计算器代码 计算器代码”表明这是一个关于计算器应用程序的编程项目,可能是用某种编程语言实现的一个简单或复杂的计算器。描述中列举了几个关键的文件,这些通常是Visual Basic 6 (VB6)项目的组成部分,...
HTML 计算器代码解析 HTML 计算器代码是一种使用 HTML、CSS 和 JavaScript 编写的简单计算器代码。该代码可以在 Web 浏览器中运行,提供基本的计算功能。本文将对该代码进行详细解析,介绍其中涉及到的 HTML、...
【标题】"js简洁实用的网页计算器代码"指的是一个基于JavaScript实现的网页计算器程序,它提供了基本的数学计算功能,并且设计简洁、易于使用。在网页开发中,这样的计算器可以作为一个交互元素,增强用户在网站上的...
### 标题:“android简单计算器代码” 此标题明确指出这是一个针对Android平台的计算器应用程序代码示例。在Android开发中,创建一个计算器应用是新手学习布局设计、用户交互以及数据处理的良好起点。 ### 描述:...
在《计算器代码(web程序设计)》中,我们看到了一个利用HTML和JavaScript结合来实现简单计算器功能的实例。这个实例展示了如何在网页上创建一个可以进行基本算术运算(加、减、乘、除)的计算器。 #### 二、理解...
标题中的“2011最新版个人所得税计算器代码(3500元起征点)”指的是2011年我国个人所得税法改革后推出的计算工具。在2011年9月1日,中国的个税起征点从原来的2000元上调至3500元,这一变化对广大工薪阶层的税负产生...
C++计算器代码分析 本资源是关于C++编写的计算器代码,涵盖基本运算、三角函数运算和对数运算。该代码实现了一个功能强大且灵活的计算器,能够处理复杂的数学表达式。 1. 基本运算符的实现 在该代码中,基本...
C语言编写的计算器代码知识点总结 计算器源代码结构 该计算器源代码由多个部分组成,包括头文件、源文件和资源文件。头文件包括stdafx.h、stdio.h、windows.h、windowsx.h、resource.h和MainDlg.h等,这些头文件...
Java普通科学型计算器代码 Java是一种广泛使用的编程语言,能够开发出功能强大且复杂的应用程序。本资源提供了一个普通科学型计算器的Java代码,实现了一个功能完整的计算器应用程序。 标题解析 Java普通科学型...
一款简单好看的html5网页计算器代码,精美的html5 css3计算器样式特效。 js代码 [removed] function s(v) { document.getElementById('res').value = v } function a(v) { document.getElementById('res...
下面将详细阐述这个“vb6计算器代码”所涵盖的知识点。 首先,用户界面(UI)是计算器的核心部分。在VB6中,我们可以使用Form控件来创建计算器的窗口,并在上面添加Button控件来模拟数字和运算符按钮。每个按钮都有...
这款简易的计算器代码示例是基于Vue.js实现的,展示了如何使用Vue的核心特性来创建一个功能齐全的加减乘除计算器。下面我们将深入探讨这个计算器涉及到的Vue.js知识点。 1. **Vue实例**:在描述中提到的计算器代码...
"计算器 软件 代码 可用计算器代码" 这个标题表明我们关注的是一个关于计算器的软件开发项目,具体来说,它是一个可用的计算器代码实现。这里的“可用”意味着该代码是经过测试和验证的,可以直接应用于实际的编程...
这个名为"MyCalculator"的项目,正如标题和描述所提到的,是一个在学习阶段编写的计算器代码,它应该能够进行基本的数学运算,并且在测试中没有发现任何问题。 在Android应用开发中,计算器通常会包含以下几个关键...
【jQuery房地产贷款计算器代码】是用于房地产网站的一个实用工具,旨在帮助用户估算他们的购房贷款负担。这个计算器基于JavaScript库jQuery,它提供了用户友好的界面和交互性,使得贷款计算过程简单直观。在房地产...