用JAVA制作一个小程序,计算两个数的加减乘除,用Applet实现

在两个文本框中分别输入两个数,要求可以根据需要计算这两个数的和差积商,加减乘除的运算符通过下拉列表选择,按“计算”按钮,把计算结果显示在第三个文本框中。(代码最好能够有注释,我是初学者,有的语句怕看不懂)

我只能做出两个数相加的。。。
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;

public class Addition extends Applet implements ActionListener {
Label label1=new Label("+");
Label label2=new Label("=");
TextField field1=new TextField(6);
TextField field2=new TextField(6);
TextField field3=new TextField(6);
Button button1=new Button("相加");

public void init() { // 初始化
add(field1); add(label1);
add(field2); add(label2);
add(field3); add(button1);
button1.addActionListener(this);
}

public void actionPerformed(ActionEvent e) { // 处理按钮事件
int x=Integer.parseInt(field1.getText())+Integer.parseInt(field2.getText());
field3.setText(Integer.toString(x)); // 数值转换为字符串
}
}

下面两个可以么,是我做实验答辩时用到的!

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=0;i<10;i++)//利用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());
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-01-03
这是根据你自己编的改正的代码,自己觉得比用下拉列表的更好,而且对你来说,这个更好理解消化。不过要是要你题目中所说的代码或是有看不懂的地方,直接HI我,或留言,我再给你。另外,初学JAVA,给你推荐一本书《JAVA开发技术大全》,我就是从这本书起步的。
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;

public class Addition extends Applet implements ActionListener {
Label label1=new Label();
Label label2=new Label("=");
TextField field1=new TextField(6);
TextField field2=new TextField(6);
TextField field3=new TextField(6);
Button button1=new Button("相加");
Button button2=new Button("相减");
Button button3=new Button("相乘");
Button button4=new Button("相除");

public void init() { // 初始化
add(field1); add(label1);
add(field2); add(label2);
add(field3); add(button1);
add(button2); add(button3);
add(button4);
button1.addActionListener(this);
button2.addActionListener(this);
button3.addActionListener(this);
button4.addActionListener(this);
}
//加
public void dobutton1() { // 处理按钮事件
int x=Integer.parseInt(field1.getText())+Integer.parseInt(field2.getText());
field3.setText(Integer.toString(x)); // 数值转换为字符串
label1.setText("+");
}
//减
public void dobutton2() { // 处理按钮事件
int x=Integer.parseInt(field1.getText())-Integer.parseInt(field2.getText());
field3.setText(Integer.toString(x)); // 数值转换为字符串
label1.setText("-");
}
//乘
public void dobutton3(){ // 处理按钮事件
int x=Integer.parseInt(field1.getText())*Integer.parseInt(field2.getText());
field3.setText(Integer.toString(x)); // 数值转换为字符串
label1.setText("*");
}
//除
public void dobutton4() { // 处理按钮事件
int x=Integer.parseInt(field1.getText())/Integer.parseInt(field2.getText());
field3.setText(Integer.toString(x)); // 数值转换为字符串
label1.setText("/");
}
//事件源处理
public void actionPerformed(ActionEvent e){
Object obj;
obj=e.getSource();
if(obj==button1){
dobutton1();
}else if(obj==button2){
dobutton2();
}else if(obj==button3){
dobutton3();
}else if(obj==button4){
dobutton4();
}
}
}本回答被提问者和网友采纳
第2个回答  2011-01-04
一看就是学校的作业题,可怜啊,现在用applet的基本上非常少了,可是学校还在教这些无用的东西。
第3个回答  2011-01-03
package com.inter.test;

import java.applet.Applet;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JTextField;

@SuppressWarnings("serial")
public class TestApplet extends Applet{

private JTextField test1;
private JTextField test2;

private JComboBox comBox;

private String[] list={"+","-","*","/"};

private JButton but;

private JTextField test3;

private JTextField getTest3(){
if(test3==null){
test3=new JTextField();
test3.setBounds(new Rectangle(120,50,50,20));
}
return test3;
}

private JButton getButton(){
if(but==null){
but=new JButton("=");
but.setBounds(new Rectangle(10,50,60,20));
but.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
String one=test1.getText();
String two=test2.getText();
char c=((String)comBox.getSelectedItem()).charAt(0);
switch(c){
case '+':
test3.setText(String.valueOf(Integer.parseInt(one)+Integer.parseInt(two)));
break;
case '-':
test3.setText(String.valueOf(Integer.parseInt(one)-Integer.parseInt(two)));
break;
case '*':
test3.setText(String.valueOf(Integer.parseInt(one)*Integer.parseInt(two)));
break;
case '/':
test3.setText(String.valueOf(Integer.parseInt(one)/Integer.parseInt(two)));
break;
}
}
});
}
return but;
}

private JTextField getTest1(){
if(test1==null){
test1=new JTextField();
test1.setBounds(new Rectangle(10,10,50,20));
}
return test1;
}

private JComboBox getCombobox(){
if(comBox==null){
comBox=new JComboBox(list);
comBox.setBounds(new Rectangle(65,10,40,20));
}
return comBox;
}

public TestApplet() {
this.setLayout(null);
this.add(getButton());
this.add(getTest1());
this.add(getCombobox());
this.add(getTest2());
this.add(getTest3());
this.setVisible(true);
}

private JTextField getTest2() {
if(test2==null){
test2=new JTextField();
test2.setBounds(new Rectangle(110,10,50,20));
}
return test2;
}

public static void main(String[] args) {
new TestApplet();
}
}
这个只能实现整数的,你再改一点,就可以实现浮点数了!
相似回答