JAVA语言程序设计一
2005-01-11 19:12
363 查看
设计题目一:设计GUI界面的计算器程序,用户可以通过鼠标依次输入参加计算的数值,进行加、减、乘、除混合运算。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
本题目设计的方法是通过:
鼠标单击进行各种输入----通过单击各种数字按钮输入整数;通过单击运算符号按钮输入算术运算;通过单击计算器面板上包含=号,按钮输入等号,以及通过单击CE按钮清除输入。
程序输出----面板输出结果或者输出错误信息(系统出错误时)。
//王睿的MyCalculator
import java.awt.*;
import java.awt.event.*;
public class MyCalculator extends WindowAdapter implements ActionListener{
private Frame f;
private Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,
b13,b14,b15,b16,b17,b18,b19;
private TextField f1;
private double ans = 0;//临时存放结果,结果最后给final
private double n1=0;//定义为存放要输入的数字,初值为没有输入数字
private int op=0;//初值为没选择任何运算
private boolean hasop=false;//初值为没有按下运算符号
private boolean dot=false;//定义为运算中小数运算,初值为无小数
public static void main(String args[]){
MyCalculator be=new MyCalculator();
be.go();
}
public void go(){
f=new Frame("王睿的计算器");
f.setLayout(new GridLayout(4,4));
f1=new TextField("",10);
b1=new Button("1");
b2=new Button("2");
b3=new Button("3");
b4=new Button("CE");
b5=new Button("4");
b6=new Button("5");
b7=new Button("6");
b8=new Button("+");
b9=new Button("7");
b10=new Button("8");
b11=new Button("9");
b12=new Button("-");
b13=new Button("*");
b14=new Button("0");
b15=new Button(".");
b16=new Button("/");
b17=new Button("=");
b18=new Button("(");
b19=new Button(")");
f.add(f1);
f.add(b1);
f.add(b2);
f.add(b3);
f.add(b4);
f.add(b5);
f.add(b6);
f.add(b7);
f.add(b8);
f.add(b9);
f.add(b10);
f.add(b11);
f.add(b12);
f.add(b13);
f.add(b14);
f.add(b15);
f.add(b16);
f.add(b17);
f.add(b18);
f.add(b19);
f.pack();
f.setVisible(true);
f.add(f1,"Center");
f.addWindowListener(this);
f.setSize(300,150);
f.setVisible(true);
}
//实现ActionListener接口中的actionPerformed()方法
public void actionPerformed(ActionEvent e){
String d = e.getActionCommand();
char c = d.charAt(0);
switch(c)
{
case '+'://首次按下运算符号且在其之前
case '-'://没有数字按下且没有连按两次
case '*':
case '/'://则先把刚刚的结果计算出来
if (op!='0' && !hasOp) //按下等号
Result();
n1 = Double.valueOf(final.getText()).doubleValue();
op = c;
hasOp = true;
dot = false;
break;
case '=': //按下等号
Result();
break;
case '.': //按下小数点
if ( !dot )
{
final.setText(final.getText()+".");
dot = true;
}
break;
case 'CE': //按下清除
n1 = 0;
op = '0';
hasOp = false;
dot = false;
final.setText("0");
break;
default: //按下数字正常执行
if (final.getText().equals("0") || hasOp)
{
final.setText(d);
hasop = false;
}
else
final.setText(final.getText()+d);
}
}
//计算结果
private void Result()
{
double n2 = Double.valueOf(final.getText()).doubleValue();
switch (op)
{
case '+':
ans = n1 + n2;
break;
case '-':
ans = n1 - n2;
break;
case '*':
ans = n1 * 2;
break;
case '/':
ans = n1 / n2;
}
op = '0';
hasOp = true;
dot = false;
n1 = ans;
final.setText(String.valueOf(ans));
}
//覆盖WindowAdapter类中的 windowClosing()方法
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
本题目设计的方法是通过:
鼠标单击进行各种输入----通过单击各种数字按钮输入整数;通过单击运算符号按钮输入算术运算;通过单击计算器面板上包含=号,按钮输入等号,以及通过单击CE按钮清除输入。
程序输出----面板输出结果或者输出错误信息(系统出错误时)。
//王睿的MyCalculator
import java.awt.*;
import java.awt.event.*;
public class MyCalculator extends WindowAdapter implements ActionListener{
private Frame f;
private Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,
b13,b14,b15,b16,b17,b18,b19;
private TextField f1;
private double ans = 0;//临时存放结果,结果最后给final
private double n1=0;//定义为存放要输入的数字,初值为没有输入数字
private int op=0;//初值为没选择任何运算
private boolean hasop=false;//初值为没有按下运算符号
private boolean dot=false;//定义为运算中小数运算,初值为无小数
public static void main(String args[]){
MyCalculator be=new MyCalculator();
be.go();
}
public void go(){
f=new Frame("王睿的计算器");
f.setLayout(new GridLayout(4,4));
f1=new TextField("",10);
b1=new Button("1");
b2=new Button("2");
b3=new Button("3");
b4=new Button("CE");
b5=new Button("4");
b6=new Button("5");
b7=new Button("6");
b8=new Button("+");
b9=new Button("7");
b10=new Button("8");
b11=new Button("9");
b12=new Button("-");
b13=new Button("*");
b14=new Button("0");
b15=new Button(".");
b16=new Button("/");
b17=new Button("=");
b18=new Button("(");
b19=new Button(")");
f.add(f1);
f.add(b1);
f.add(b2);
f.add(b3);
f.add(b4);
f.add(b5);
f.add(b6);
f.add(b7);
f.add(b8);
f.add(b9);
f.add(b10);
f.add(b11);
f.add(b12);
f.add(b13);
f.add(b14);
f.add(b15);
f.add(b16);
f.add(b17);
f.add(b18);
f.add(b19);
f.pack();
f.setVisible(true);
f.add(f1,"Center");
f.addWindowListener(this);
f.setSize(300,150);
f.setVisible(true);
}
//实现ActionListener接口中的actionPerformed()方法
public void actionPerformed(ActionEvent e){
String d = e.getActionCommand();
char c = d.charAt(0);
switch(c)
{
case '+'://首次按下运算符号且在其之前
case '-'://没有数字按下且没有连按两次
case '*':
case '/'://则先把刚刚的结果计算出来
if (op!='0' && !hasOp) //按下等号
Result();
n1 = Double.valueOf(final.getText()).doubleValue();
op = c;
hasOp = true;
dot = false;
break;
case '=': //按下等号
Result();
break;
case '.': //按下小数点
if ( !dot )
{
final.setText(final.getText()+".");
dot = true;
}
break;
case 'CE': //按下清除
n1 = 0;
op = '0';
hasOp = false;
dot = false;
final.setText("0");
break;
default: //按下数字正常执行
if (final.getText().equals("0") || hasOp)
{
final.setText(d);
hasop = false;
}
else
final.setText(final.getText()+d);
}
}
//计算结果
private void Result()
{
double n2 = Double.valueOf(final.getText()).doubleValue();
switch (op)
{
case '+':
ans = n1 + n2;
break;
case '-':
ans = n1 - n2;
break;
case '*':
ans = n1 * 2;
break;
case '/':
ans = n1 / n2;
}
op = '0';
hasOp = true;
dot = false;
n1 = ans;
final.setText(String.valueOf(ans));
}
//覆盖WindowAdapter类中的 windowClosing()方法
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
相关文章推荐
- java 语言程序设计-李尊朝 第5章 数组 练习答案
- Java语言程序设计-Markdown格式作业模板
- Java 语言程序设计课件【1~7章】(Word版)
- Java语言程序设计-基础篇(一)基础知识
- Java语言程序设计-基础篇-第八版-复习题-第二章
- Java语言程序设计-进阶篇(二)泛型
- Java语言程序设计-基础篇-第八版-复习题-第七章
- 【JAVA语言程序设计基础篇】--图形--练习绘制弧形
- java 语言程序设计-李尊朝 第6章 类和对象 练习答案
- JAVA语言程序设计 第十六章 (16.10、16.11、16.12、16.13、16.14、16.15、16.16)
- Java语言的基本程序设计结构
- java语言程序设计-基础篇
- Java语言程序设计-基础篇-第八版-第六章
- Java语言程序设计-进阶篇(七)多线程与并行程序设计【上】
- <<Java语言程序设计>>进阶篇 Exercise8_7
- Java语言程序设计 第二章(2.6)
- JAVA语言程序设计-基础篇课后习题2.1--2.17
- Java语言程序设计-基础篇-第八版-编程练习题-第二章
- Java语言程序设计 第十五章(15.33 )分豆机
- Java语言程序设计-基础篇第七章-二维数组