中易网

求大神指导下java简单计算器

答案:5  悬赏:20  
解决时间 2021-04-08 11:00
求助java简单计算器的编写大家好,初学java,今天做一个简易计算器,基本功能都做出来了,但是却不能进行多位数运行,每次只能输入个位数进行运算,比如按两下1按钮,变成11,听有人说,要用StringBuffer进行拼接字符串,求大神帮我修改下我的这份源码或者告诉我该怎么做,感激不尽!
http://pan.baidu.com/share/link?shareid=484719633&uk=4131382135
最佳答案
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Test1 {
public static void main(String[] args) {
@SuppressWarnings("unused")
caclWindows abc=new caclWindows();
}
}
class caclWindows extends JFrame implements ActionListener{
private static final long serialVersionUID = 3412857642504559981L;
public caclWindows(){
//窗口设置
this.setTitle("计算器");
this.setSize(280, 270);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.zujian();
this.setVisible(true);
}
//上下面板
private JPanel topJP;
private JPanel bottomJP;
//菜单栏
private JMenuBar cacluMenu;
//菜单
private JMenu seeJM;
private JMenu editJM;
private JMenu helpJM;
//菜单项
private JMenuItem bianJMI;
private JMenuItem keXueJMI;
private JMenuItem programJMI;
private JMenuItem infoJMI;
private JMenuItem historyJMI;
private JMenuItem shuJMI;
private JMenuItem copyJMI;
private JMenuItem zhanTieJMI;
private JMenuItem writeJMI;
private JMenuItem helpJMI;
private JMenuItem aboutJMI;
private JMenuItem aboutJMI2;
//文本框
private JTextField windowJTF;
//按钮
private JButton shuzi;
public void zujian(){
//实列化
topJP=new JPanel();
topJP.setLayout(new GridLayout(1, 3));
bottomJP=new JPanel();
bottomJP.setLayout(new GridLayout(4,5,6,8));
cacluMenu=new JMenuBar();
windowJTF=new JTextField();
windowJTF.setFont(new Font("楷体",Font.BOLD,28));
windowJTF.setForeground(Color.RED);
windowJTF.setHorizontalAlignment(JTextField.RIGHT);
seeJM=new JMenu("查看(V)");
editJM=new JMenu("编辑(E)");
helpJM=new JMenu("帮助(H)");
bianJMI=new JMenuItem("标准型");
keXueJMI=new JMenuItem("科学型");
programJMI=new JMenuItem("程序员");
infoJMI=new JMenuItem("统计信息");
historyJMI=new JMenuItem("历史记录");
shuJMI=new JMenuItem("数字分组");
copyJMI=new JMenuItem("复制");
zhanTieJMI=new JMenuItem("粘贴");
writeJMI=new JMenuItem("历史记录");
helpJMI=new JMenuItem("查看帮助");
aboutJMI=new JMenuItem("关于计算器");
aboutJMI2=new JMenuItem("liulei");
//将菜单放入菜单条
cacluMenu.add(seeJM);
cacluMenu.add(editJM);
cacluMenu.add(helpJM);
seeJM.add(bianJMI);
seeJM.add(keXueJMI);
seeJM.add(programJMI);
seeJM.add(infoJMI);
seeJM.add(historyJMI);
seeJM.add(shuJMI);
editJM.add(copyJMI);
editJM.add(zhanTieJMI);
editJM.add(writeJMI);
helpJM.add(helpJMI);
helpJM.add(aboutJMI);
helpJM.add(aboutJMI2);
//添加数字到按钮
for(int i=0;i<=9;i++){
shuzi=new JButton(i+"");
bottomJP.add(shuzi);
shuzi.addActionListener(this);
}
//添加运算符到按钮
String yunS[]=new String[]{"+","-","x","/","清零","="};
for(int a=0;a<6;a++){
shuzi=new JButton(yunS[a]);
bottomJP.add(shuzi);
shuzi.addActionListener(this);
}
topJP.add(windowJTF);
//添加组件到窗口
this.add(cacluMenu,BorderLayout.NORTH);
this.add(topJP,BorderLayout.CENTER);
this.add(bottomJP,BorderLayout.SOUTH);
}
static String suanF="";
int engShu;
static int yi;
static int er;
//保存输出结果
String print;
@Override
public void actionPerformed(ActionEvent e) {
//i(主要测试语句)
String butShu=((JButton)e.getSource()).getText();
//从按钮监听运算数
if(butShu.equals("+")||butShu.equals("-")||butShu.equals("x")||butShu.equals("/")||butShu.equals("清零")||butShu.equals("=")){
String suanFu=butShu;
//将监听到的运算符的值赋给成员变量suanF
suanF=suanFu;
//将监听到的数2赋给成员变量er保存
er=yi;
//显示运算数2
windowJTF.setText(er+"");
//显示运算符
windowJTF.setText(suanF+"");
//清零操作
if(butShu.equals("清零")){
yi=0;
er=0;
engShu=0;
windowJTF.setText(null);
}
if(butShu.equals("=")){
windowJTF.setText(null);
windowJTF.setText(print);
yi=engShu;
}
//iSystem.out.println(print);
}
//从按钮监听计算符
if(!butShu.equals("+")&&!butShu.equals("-")&&!butShu.equals("x")&&!butShu.equals("/")&&!butShu.equals("清零")&&!butShu.equals("=")){
//显示之前先把原来的数字拼接上就行了
//int shu=Integer.parseInt(butShu);
int shu=Integer.parseInt(windowJTF.getText()+butShu);
yi=shu;
//System.out.println(l);
//将监听到的数1赋给成员变量yi保存
//显示运算数1
windowJTF.setText(yi+"");
//根据运算符进行相应计算
if(suanF.equals("+")){
engShu=yi+er;
//System.out.println("结果加法"+engShu);
}else if(suanF.equals("-")){
engShu=er-yi;
//System.out.println("结果减法 "+engShu);
//windowJTF.setText(er+"-"+yi+"="+engShu+"");
}else if(suanF.equals("x")){
engShu=yi*er;
//iSystem.out.println("结果乘法"+engShu);
//windowJTF.setText(er+"x"+yi+"="+engShu+"");
}else if(suanF.equals("/")){
if(yi!=0&&er!=0){
engShu=er/yi;
}else if(er==0){
windowJTF.setText("除数不能为0!");
}
//iSystem.out.println("结果除法 "+engShu);
//windowJTF.setText(er+"/"+yi+"="+engShu+"");
}
if(er!=0){
//windowJTF.setText(er+suanF+yi+"="+engShu+"");
print=er+suanF+yi+"="+engShu+"";
//显示后将结果值赋给第一个计算数,以便参与二次运算
yi=engShu;
}
//测试显示结果
//iSystem.out.println("1:"+engShu);
//当判断有数参与运算后输出结果
//iSystem.out.println("i"+shu);
}
//iSystem.out.println("测试:"+suanF+","+suanShu);
}
}
看了你的代码,稍微改一下就可以了,帮你加了注释,不过其他还有问题,自己在调整下就好了
全部回答
获取输入值后拼成一个StringBuffer后转换成integer
你可以在按下运算符的同时,再进行记录下之前按下的数字
计最简单的计算器,要实践报
看了下代码,里面的窗体语句比较多,我看着挺费劲的,顺便说下java做界面这块一般用jsp或者php的,窗体语句的话目前企业开发中几乎不用。 我的思路是这样的: 1。yi和er为字符串型并初始化为“”,如static String yi=“”; 2.定义一个getNum1方法,如public int getNum1(){} 3.方法里面有一个while循环: a.如果接下里输入的字符不为加减乘除或者等于号,把它加入yi,如yi+=nextChar; b.如果是加减乘除或者等于号,把yi转化为int型,并返回值,如try{return Integer.parseInt(yi)}catch(Exception e){} 4.再以同样的方法得到数字二,再进行运算。 建议不转化为整型,改为double型可以防止3/2=1的情况。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
日语里,“天下没有不散散的筵席”怎么说?
给木兰诗全本文划分结构
邮储手机银行我第一次用怎么说交易密码错误呢
老公叫刘红旗,老婆叫刘倩。女儿是11月18出生
密闭套管D114x3.5(A型)是什么意思
3d.max修改贴图路径,我新建的文件怎么改贴图
我想知道自己的银行卡号怎么弄
房屋抵押贷款是不是只要有房产证就可以办理贷
请问高手们液晶显示器内置电源坏掉是否能用外
计算机可以分为哪几类?它们特点是什么?
印度女明星在印度的地位是怎么样的
冬天腿上的毛孔怎么都便成小疙瘩了?
欢辣颂串串香(江都店)地址有知道的么?有点事
105度16分角的补角是多少度多少分?
上海交通大学医学院附属上海儿童医学中心属于
推荐资讯
天线发射出不同的波段的信号,是跟他的天线长
010-51395580是邮政储蓄银行的电话吗
电子科技大学录取分数线是614 但是他的软件工
谁有149比0的足球比赛,不是篮球
520香烟的真假如何鉴别?
从广州海珠客运站去潮州有车吗
索信平板电脑恢复出厂后无法开机
淡黄颜色皮夹克 配什么裤子好看啊
写一下sinx cosx tanx cotx单调区间
魅族u20有没有微信分身
评估增值额要交税吗
广电的宽带是玩电信的游戏好还是网通的好
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?