| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 415 人关注过本帖
标题:[求助]请教大师们~关于我编写的简单计算器
只看楼主 加入收藏
beiny
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-10-18
收藏
 问题点数:0 回复次数:3 
[求助]请教大师们~关于我编写的简单计算器

各位大师.我是一个刚学JAVA的菜鸟.昨天编写了一个只有加减的计算器..可是问题就一大堆..当我PRESS加号或者减号的时候.之前输入的数字就会全部清零.而且加减算法上也有问题.能帮我解决一下吗??谢谢


import java.applet.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;


public class calc extends Applet implements ActionListener
{ //declare global variables and constants
private JTextField displayBox;
private Button[] numButtons;
private String[] num = {"7","8","9","4","5","6","1","2","3","0","","C","+","-","="};
private int[] indexSorter = {7,8,9,4,5,6,1,2,3,0,10,11,12,13,14};
private long total=0;
private long subTotal=0;
private long numIdx=0;
private String numString="0";
private boolean firstNo = true;


//start method of applet
public void init()
{ GridBagLayout gLayout = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
setLayout(gLayout);
this.setBackground(new Color(0,100,150));
this.setForeground(Color.black);

//text box for calculator display
Panel p = new Panel();
p.setLayout(new FlowLayout());
displayBox = new JTextField(15);
displayBox.setHorizontalAlignment(JTextField.RIGHT);
displayBox.setEditable(false);
displayBox.addActionListener(this);
p.add(displayBox);

//set gridBag constraints for this component (panel)
c.gridwidth = GridBagConstraints.REMAINDER;
c.fill = GridBagConstraints.HORIZONTAL;
c.insets = new Insets(10,10,10,10);
c.anchor = GridBagConstraints.NORTH;

gLayout.setConstraints(p,c);
add(p);

//buttons for numbers
Panel q = new Panel();
q.setLayout(new GridLayout(5,3,20,20));
numButtons = new Button[num.length];

for (int i=0;i<num.length;i++)
{ numButtons[indexSorter[i]] = new Button(num[i]);
numButtons[indexSorter[i]].addActionListener(this);
q.add(numButtons[indexSorter[i]]);
}

c.gridheight = GridBagConstraints.REMAINDER;
c.anchor = GridBagConstraints.CENTER;
c.weighty = 1.0;

gLayout.setConstraints(q,c);
add(q);

}

//actions performed when button input recognised by ActionListener
public void actionPerformed(ActionEvent e)
{ Object source = e.getSource();
for (int i=0;i<10;i++)
{ if (source == numButtons[i])
{ numIdx=i;
if (firstNo)
{ numString="";
firstNo=false;
}
numString=numString+Long.toString(numIdx);
displayBox.setText(numString);
subTotal=(subTotal*10)+numIdx;
}
}

//clear
if (source == numButtons[11])
{ numString="0";
subTotal=0;
total=0;
displayBox.setText(numString);
firstNo=true;
}

//+
if (source == numButtons[12])
{
total=total+subTotal;
subTotal=0;
numString=Long.toString(0);
displayBox.setText(numString);
firstNo=true;
}

//-
if (source == numButtons[13])
{ total=total-subTotal;
subTotal=0;
numString=Long.toString(0);
displayBox.setText(numString);
firstNo=true;
}

//=
if (source == numButtons[14])
{ numString=Long.toString(total);
displayBox.setText(numString);
firstNo=true;
}
}
}

搜索更多相关主题的帖子: 计算器 大师 编写 
2007-10-18 06:44
牧人蓝兮
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-10-20
收藏
得分:0 

我没有学过JAVA
我记得我刚学VB的时候也写过一个计算器,跟你的情况有点相似
在VB 和C中的变量分全局和局部变量
而在vb某个事件下定义的变量就是局部变量,它只在这个事件过程中起作用,并且是临时的.当这个事件结束或你激活其它事件时,这个变量就不存在了
希望对你有帮助


长城如果拆开了,只不过是一堆散乱的石头.生活如果过得没有目标,就只是一些散乱岁月
2007-10-20 04:45
neillopv
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2007-8-31
收藏
得分:0 
好看但看不懂
2007-10-20 09:44
junjinram
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-10-20
收藏
得分:0 
编译通过了,但运行时MAIN抛出异常
2007-10-20 13:09
快速回复:[求助]请教大师们~关于我编写的简单计算器
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011234 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved