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

求助java简单计算器的编写大家好,初学java,今天做一个简易计算器,基本功能都做出来了,但是却不能进行多位数运行,每次只能输入个位数进行运算,比如按两下1按钮,变成1... 求助java简单计算器的编写大家好,初学java,今天做一个简易计算器,基本功能都做出来了,但是却不能进行多位数运行,每次只能输入个位数进行运算,比如按两下1按钮,变成11,听有人说,要用StringBuffer进行拼接字符串,求大神帮我修改下我的这份源码或者告诉我该怎么做,感激不尽!
http://pan.baidu.com/share/link?shareid=484719633&uk=4131382135
展开
 我来答
dark19861201
2016-01-11 · TA获得超过2153个赞
知道大有可为答主
回答量:2584
采纳率:79%
帮助的人:1808万
展开全部
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;
/**
 * 计算器
 * @author LiuLei
 */
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);
}
}
看了你的代码,稍微改一下就可以了,帮你加了注释,不过其他还有问题,自己在调整下就好了
追问
感谢。
好难取铭字啊啊
2016-01-11
知道答主
回答量:11
采纳率:0%
帮助的人:3.1万
展开全部
看了下代码,里面的窗体语句比较多,我看着挺费劲的,顺便说下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的情况。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
刷新遮旧L
2016-01-11 · TA获得超过1638个赞
知道小有建树答主
回答量:364
采纳率:50%
帮助的人:108万
展开全部
获取输入值后拼成一个StringBuffer后转换成integer
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ArvinSen
2016-01-11 · 超过52用户采纳过TA的回答
知道小有建树答主
回答量:127
采纳率:0%
帮助的人:82.6万
展开全部
你可以在按下运算符的同时,再进行记录下之前按下的数字
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我现在年轻
2016-01-11
知道答主
回答量:2
采纳率:0%
帮助的人:2338
展开全部
输入框有个append方法就是拼接功能
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式