永发信息网

优化java 计算器程序

答案:2  悬赏:70  手机版
解决时间 2021-08-15 01:16

修改一下啊 太多了

import java.awt.*;
import java.lang.Object;
import java.awt.event.*;
import java.lang.String;
import javax.swing.*;
import java.awt.TextComponent;

public class test extends Frame{
//声明16个Button
Button btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btn10, btn11, btn12, btn13, btn14,btn15,btn16;
//声明1个文本框,用于接收数字和操作
TextField numText;
//声明一个面板专门用于存放按钮
Panel btnPanel;
//构造函数初始话按钮
public test(String title){
super(title);
btn1=new Button("0");
btn2=new Button("1");
btn3=new Button("2");
btn4=new Button("3");
btn5=new Button("4");
btn6=new Button("5");
btn7=new Button("6");
btn8=new Button("7");
btn9=new Button("8");
btn10=new Button("9");
btn11=new Button("+");
btn12=new Button("-");
btn13=new Button("*");
btn14=new Button("/");
btn15=new Button("=");
btn16=new Button("清空");

//将文本的初始值设置成0
numText=new TextField("");
//实例化放按钮的Panel;
btnPanel=new Panel();
//将布局模式设置成流式布局
btnPanel.setLayout(new GridLayout(4,4,5,3));
//为每个按钮添加事件
btn1.addActionListener(new btnAction());
btn2.addActionListener(new btnAction());
btn3.addActionListener(new btnAction());
btn4.addActionListener(new btnAction());
btn5.addActionListener(new btnAction());
btn6.addActionListener(new btnAction());
btn7.addActionListener(new btnAction());
btn8.addActionListener(new btnAction());
btn9.addActionListener(new btnAction());
btn10.addActionListener(new btnAction());
btn11.addActionListener(new btnAction());
btn12.addActionListener(new btnAction());
btn13.addActionListener(new btnAction());
btn14.addActionListener(new btnAction());
btn15.addActionListener(new btnAction());
btn16.addActionListener(new btnAction());
//将按钮添加到Panel
btnPanel.add(btn1);
btnPanel.add(btn2);
btnPanel.add(btn3);
btnPanel.add(btn4);
btnPanel.add(btn5);
btnPanel.add(btn6);
btnPanel.add(btn7);
btnPanel.add(btn8);
btnPanel.add(btn9);
btnPanel.add(btn10);
btnPanel.add(btn11);
btnPanel.add(btn12);
btnPanel.add(btn13);
btnPanel.add(btn14);
btnPanel.add(btn15);
btnPanel.add(btn16);
//为文本框添加事件
numText.addTextListener(new TextListener() {
public void textValueChanged(TextEvent e) {
if(numText.getText().indexOf("0",0)!=-1){
numText.getText().replace("0","");
}
}
});
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
//将文本框放在北部
add(numText,BorderLayout.NORTH);
//将按钮放于中部
add(btnPanel,BorderLayout.CENTER);
//将文本设置成不可操作
numText.setEditable(false);

}
//没有任何操作的值
int num=0;
//numStr是文本框的值
String numStr=null;
Boolean chinage=false;
//单击按钮的方法
public int check(){

numStr = numText.getText();
//判断文本是否已经有了+,-,*,/
if (numStr.indexOf("+") == 0) {
numStr = numStr.replace('+', '0');
num = num + Integer.parseInt(numStr);
return num;
}else
if (numStr.indexOf("-") != -1) {
numStr = numStr.replace("-", "0");
num = num - Integer.parseInt(numStr);
return num;
}
else
if(numStr.indexOf("*")!=-1){
numStr=numStr.replace('*','0');
num = num * Integer.parseInt(numStr);
return num;
}
else
if(numStr.indexOf("/")!=-1){

numStr=numStr.replace('/','0');
try{
num = num / Integer.parseInt(numStr);
return num;
}catch(ArithmeticException e){
JOptionPane.showMessageDialog(null,"除数不能为空!","消息!",1);
return num;
}


}
else
return num=Integer.parseInt(numStr);
}
//创建事件
//这里面的东西都很简单主要就是改变文本的值和判断操作
private class btnAction implements ActionListener{
public void actionPerformed(ActionEvent event){
if(event.getActionCommand()=="0"){
if(!numText.getText().equals("0"))
numText.setText(numText.getText()+0);
}
if(event.getActionCommand()=="1")
numText.setText(numText.getText()+1);
if(event.getActionCommand()=="2")
numText.setText(numText.getText()+2);
if(event.getActionCommand()=="3")
numText.setText(numText.getText()+3);
if(event.getActionCommand()=="4")
numText.setText(numText.getText()+4);
if(event.getActionCommand()=="5")
numText.setText(numText.getText()+5);
if(event.getActionCommand()=="6")
numText.setText(numText.getText()+6);
if(event.getActionCommand()=="7")
numText.setText(numText.getText()+7);
if(event.getActionCommand()=="8")
numText.setText(numText.getText()+8);
if(event.getActionCommand()=="9")
numText.setText(numText.getText()+9);
if(event.getActionCommand()=="清空"){
numText.setText("");
num=0;
}
if(event.getActionCommand()=="+"){
//调用上面的check();方法
check();
numText.setText("+");
}
if(event.getActionCommand()=="-"){

check();
numText.setText("-");
}
if(event.getActionCommand()=="*"){

check();
numText.setText("*");
}
if(event.getActionCommand()=="/"){
if(numStr=="/0"){
JOptionPane.showMessageDialog(null,"除数不能为空!","消息!",1);

}

check();
numText.setText("/");
}
if(event.getActionCommand()=="="){

check();
numText.setText(""+num);

}}}
public static void main(String[] args){

test test=new test("计数器");
test.setSize(200,180);
//设置界面的位置
test.setLocation(500,300);
//让界面可现
test.setVisible(true);
}}

最佳答案
做个计算器,按钮怎么能一个一个弄呢。好没效率的。。。按钮上的标签可以用String数组装,还后for循环遍历数组
全部回答
能优化的就是按钮用数组定义,不要一一定义。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
追求绝对公平的诗句,XP会不会比98更加充分的
有谁要买办公桌屏风的?
求 足球经理2010 球队队徽 只需要5大联赛就行
取个英文名,我叫吴诗婷.女生~希望可以比较少
让胡路区大庆红豆之家我想知道这个在什么地方
脸被烫伤了,用什么可以治好还不会留疤
聚划算怎么领取优惠券,淘宝双11活动最低价规
和姐妹旅游开心的句子,兄弟姐妹聚会发表几句
DNF 第一次玩格斗家 不知道转什么爽 给点建议
诛仙2青云75级衣服
如何查询自己宽带账号,如何查看自己的电信宽
多伦多和墨尔本哪个城市更好呢
般可以加什么偏旁组词,秀字可以加什么偏旁并
今天好像下雨累是吗?????
青岛到邯郸汽车时间及票价最新
推荐资讯
临沂师范学院08.09年专科二批分数线多少,10
女娲生了几个孩子
视觉神经和听觉神经哪个更长?
广水市随州绿能电动车地址是什么,有没有知道
陕西高考语,数,外及理综的考试范围
刚重做的GHOST系统,打开浏览器页面怎么带颜
现在刷雷者1.92还可不可以用?可以用的话谁发
蹦蹦跳跳的意思是什么,找烧饼说过一个相声
x≠2能用区间表示吗?
郑爽在《左伴边翅膀》里用的箱包是?
过年送给老师的祝福语,谁能给我一段写给政治
求dnf什么布甲是加移动速的?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?