import java.awt.*//AWT核心包
import java.awt.event.*//提供事件类和监听器
public class Counter extends Frame implements ActionListener
{
TextField t=new TextField("")//文本框
Panel p1=new Panel()//new一个panel,用于存放数字键和符号键。
Panel p2=new Panel()//new一个panel,用于存放开方、平方、和清除键。
Button[] b=new Button[10]//实例化Button对象
Button bAdd=new Button("加")
Button bSub=new Button("减")
Button bMul=new Button("乘以")
Button bPoint=new Button(".")
Button bDiv=new Button("除以")
Button bEqual=new Button("等於")
Button bSqrt=new Button("开方")
Button bPow=new Button("平方")
Button bNull=new Button("清除")
String str1=""//str1和str2存放两个输入的数
String str2=""
String operator=null //存放加减乘除以及开平方的符号
boolean first=true //检验输入的是否为第一个数
int countOper=0 //累计输入符号的个数,连加连减等 *** 作中会用到
double result=0.0 //暂存结果
double num1=0.0,num2=0.0 //两个输入的数做运算时转化为double存放
boolean error=false //检验除数是否为0
//构造方法
public Counter()
{
Frame s=new Frame("计算器")//创建Frame
for(int i=0i<10i++)//利用for循环将数字键添加进p1中
{
b[i]=new Button(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(new GridLayout(4,4,5,5))//网格布局管理器,把容器根据行数和列数分成同样大小的单元,
//每个单元可容纳一个组件,并且此组件会填满网格单元,不能控
//制其占据网格的大小。4、4为网格的行、列数。5、5为组建之间的
//间距
p2.setLayout(new FlowLayout())//用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(new Color(20,200,10))//设置Frame的背景,默认为白色
setVisible(true)//设置Frame设置为可见
addWindowListener(new WindowAdapter(){ //关闭窗口功能
public void windowClosing(WindowEvent e)
{
System.exit(0)
}
})
}
//实现接口ActionListener
public void actionPerformed(ActionEvent e)
{
Button temp=(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显示在文本框中
}
}
else if(e.getActionCommand().equals("oper"))
{
if(str1=="")//如果还没有输入数就点击运算符执行if
{
countOper=0//若此,则将计数清零
first=true
}
else
{
countOper++//计算输入符号的个数
if(countOper>1)//若输入的符号个数多余一个,则可以进行计算
{
getResult()
}
operator=temp.getLabel()//存放加减乘除以及开方、平方的符号
first=false
}
}
else if(e.getActionCommand().equals("开方"))
{
double d=Math.sqrt(Double.parseDouble(str1))
str1=String.valueOf(d)//将计算出来的结果再次传给str1,为连计算准备
t.setText(String.valueOf(d))//将计算出来的结果传至文本框中
first=false//置为false,即已输入第一个数
}
else if(e.getActionCommand().equals("平方"))
{
double f=Math.pow(Double.parseDouble(str1),2)
str1=String.valueOf(f)
t.setText(String.valueOf(f))
first=false
}
else if(e.getActionCommand().equals("清除"))
{
str1=""//清空
str2=""
t.setText("")//将文本框清空
countOper=0//将按键计数器清零
first=true
error=false
}
else if(e.getActionCommand().equals("等於"))
{
if((str1=="")||(str2=="")) //两个数没有输全就点击等号,执行if
{
countOper=0//将按键计数器清零
first=true
}
else
{
getResult()
countOper=0
}
}
}
//运算结果的方法
public void getResult()
{
num1=Double.parseDouble(str1)
num2=Double.parseDouble(str2)
if(operator.equals("加"))
{
result=num1+num2
}
else if(operator.equals("减"))
{
result=num1-num2
}
else if(operator.equals("乘以"))
{
result=num1*num2
}
else if(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 void main(String[] args)
{
new Counter()//创建一个对象"计算器"
}
}
import java.awt.*
import java.awt.event.*
import javax.swing.*
class CalculatorPanel extends JPanel
implements ActionListener
{ public CalculatorPanel()
{ setLayout(new BorderLayout())
display = new JTextField("0")
display.setEditable(false)
add(display, "North")
JPanel p = new JPanel()
p.setLayout(new GridLayout(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)
{ JButton b = new JButton(s)
c.add(b)
b.addActionListener(this)
}
public void actionPerformed(ActionEvent evt)
{ String s = evt.getActionCommand()
if ('0' <= s.charAt(0) && s.charAt(0) <= '9'
|| s.equals("."))
{ if (start) display.setText(s)
else display.setText(display.getText() + s)
start = false
}
else
{ if (start)
{ if (s.equals("-"))
else op = s
}
else
{ calculate(Double.parseDouble(display.getText()))
op = s
start = true
}
}
}
public void calculate(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 JTextField display
private double arg = 0
private String op = "="
private boolean start = true
}
public class CalculatorApplet extends JApplet
{ public void init()
{ Container contentPane = getContentPane()
contentPane.add(new CalculatorPanel())
}
}
#include<stdio.h>#include<stdlib.h>
main()
{
float a,b,rechar c printf("input(like 12+15 or 12*15):\n") scanf("%f",&a)
do{
scanf("%c",&c)}while(c == ' ')scanf("%f",&b) switch(c)
{
case '+': re = a+bbreakcase '-': re = a-bbreakcase '*': re = a*bcase '/': re = a/bdefault: break
}
printf("output the result:%.1f\n",re)system("pause")
}
输入示例: 2+3(or 2*3 or 2-3 or 2/3)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)