JAVA程序计算器除法不为零_请帮忙看下,为什么这个计算器不能运算呢?

已结贴√

问题点数:20 回复次数:2

ca56232b3bbedf9a539d07f37fffb99a.gif

3144d8b7615c79d9f638db40d5689d26.gif

a218af6549b45ee526caf607ebff1358.gif

0f8df0e29816ae721419de940fb833d1.gif

请帮忙看下,为什么这个计算器不能运算呢?

/**

* @(#)SheJi.java

*

*

* @author 张愉

* @version 1.00 2014/6/22

*/

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

class SheJi extends JFrame implements ActionListener{

private    JButton b[] = new JButton[28];

private    JTextField t;

private    JPanel p[]=new JPanel[10];

private final String[] keys={"MC","MR","MS","M+","M-","back","CE","C","+/-","sqrt","7","8","9","/","%","4","5","6",

"*","1/x","1","2","3","-","=","0",".","+"};

public SheJi(){

super("计算器--张愉");

for(int i=0;i

b[i]=new JButton(keys[i]);

b[i].setFont(new Font("黑体", Font.PLAIN, 15));

}

t=new JTextField(44);

t.setFont(new Font("黑体", Font.PLAIN, 15));

t.setText("0");

t.setHorizontalAlignment(t.RIGHT);//文本在文本框里的对齐方式。

t.setEditable(false);

p[0]=new JPanel();//设置文本域所在的面板。

p[0].add(t);

p[1]=new JPanel();//设置前4行5列的按钮所在的面板。

p[1].setLayout(new GridLayout(4,5,2,2));

for(int i=0;i<20;i++){

b[i].setPreferredSize(new Dimension(70,30));//强制设置按钮的大小。

p[1].add(b[i]);

}

p[2]=new JPanel(new BorderLayout(2,2)); //设置后两行的按钮所在的面板。

p[3]=new JPanel();

p[3].setLayout(new GridLayout(2,1,2,2));//设置1,2,0按钮所在的面板

p[9]=new JPanel(new GridLayout(1,2,2,2));//设置1,2按钮所在的面板

b[20].setPreferredSize(new Dimension(70,30));

p[9].add(b[20]);

b[21].setPreferredSize(new Dimension(70,30));

p[9].add(b[21]);

//把1,2按钮所在的面板和0按钮所在的面板添加到1,2,0添加到p[3]面板

p[3].add(p[9]);

b[25].setPreferredSize(new Dimension(50,20));

p[3].add(b[25]);

p[6]=new JPanel();

p[6].setLayout(new GridLayout(2,1,2,2));

b[22].setPreferredSize(new Dimension(70,30));

p[6].add(b[22]);

b[26].setPreferredSize(new Dimension(70,30));

p[6].add(b[26]);

p[4]=new JPanel();

p[4].setLayout(new GridLayout(1,2,2,2));

p[5]=new JPanel(new GridLayout(2,1,2,2));

b[23].setPreferredSize(new Dimension(70,30));

p[5].add(b[23]);

b[27].setPreferredSize(new Dimension(70,30));

p[5].add(b[27]);

b[24].setPreferredSize(new Dimension(70,30));

p[4].add(p[5]);

p[4].add(b[24]);

p[2].add("West",p[3]);

p[2].add("East",p[4]);

p[2].add("Center",p[6]);

p[8]=new JPanel();

p[8].add(p[0]);

p[8].add(p[1]);

p[8].add(p[2]);

add(p[8]);

//为各个按钮添加事件监听器。

for(int i=0;i

b[i].addActionListener(this);

setSize(400,275);

setVisible(true);

setLocation(500,350);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public void actionPerformed(ActionEvent e){

double flag1=0,flag2=0,flag3=0;//前两个是为了记录操作的数字,第三个是结果

int a=0;//标志运算的

if(e.getSource()==b[6])//按钮CE/C清0功能

t.setText("0");

if(e.getSource()==b[26]){//按钮小数点(.)

if(t.getText().indexOf(".")==-1)//前面有小数点,indexOf()函数是查找字符串里面是否有字母,为了查看前面输入的字符是否有小数点

{

if(t.getText().equals("0"))

t.setText("0.");

else

t.setText(t.getText()+".");

}

else

t.setText(t.getText());

}

if(e.getSource()==b[7])//按钮C清0功能.

t.setText("0");

if(e.getSource()==b[25])//按钮0.

{

if(t.getText().equals("0")){

t.setText("");

t.setText(t.getText()+"0");

}

else{

t.setText(t.getText()+"0");

}

flag1=Double.parseDouble(t.getText());//把文本强制转化为Double类型。

}

if(e.getSource()==b[20]){//按钮1.

if(t.getText().equals("0")){

t.setText("");

t.setText(t.getText()+"1");

}

else{

t.setText(t.getText()+"1");

}

flag1=Double.parseDouble(t.getText());//把文本强制转化为Double类型。

}

if(e.getSource()==b[21]){//按钮2.

if(t.getText().equals("0")){

t.setText("");

t.setText(t.getText()+"2");

}

else{

t.setText(t.getText()+"2");

}

flag1=Double.parseDouble(t.getText());//把文本强制转化为Double类型。

}

if(e.getSource()==b[22]){//按钮3.

if(t.getText().equals("0")){

t.setText("");

t.setText(t.getText()+"3");

}

else{

t.setText(t.getText()+"3");

}

flag1=Double.parseDouble(t.getText());//把文本强制转化为Double类型

}

if(e.getSource()==b[15]){//按钮4.

if(t.getText().equals("0")){

t.setText("");

t.setText(t.getText()+"4");

}

else{

t.setText(t.getText()+"4");

}

flag1=Double.parseDouble(t.getText());//把文本强制转化为Double类型

}

if(e.getSource()==b[16]){//按钮5.

if(t.getText().equals("0")){

t.setText("");

t.setText(t.getText()+"5");

}

else{

t.setText(t.getText()+"5");

}

flag1=Double.parseDouble(t.getText());//把文本强制转化为Double类型

}

if(e.getSource()==b[17]){//按钮6.

if(t.getText().equals("0")){

t.setText("");

t.setText(t.getText()+"6");

}

else{

t.setText(t.getText()+"6");

}

flag1=Double.parseDouble(t.getText());//把文本强制转化为Double类型

}

if(e.getSource()==b[10]){//按钮7.

if(t.getText().equals("0")){

t.setText("");

t.setText(t.getText()+"7");

}

else{

t.setText(t.getText()+"7");

}

flag1=Double.parseDouble(t.getText());//把文本强制转化为Double类型

}

if(e.getSource()==b[11]){//按钮8.

if(t.getText().equals("0")){

t.setText("");

t.setText(t.getText()+"8");

}

else{

t.setText(t.getText()+"8");

}

flag1=Double.parseDouble(t.getText());//把文本强制转化为Double类型

}

if(e.getSource()==b[12]){//按钮9.

if(t.getText().equals("0")){

t.setText("");

t.setText(t.getText()+"9");

}

else{

t.setText(t.getText()+"9");

}

flag1=Double.parseDouble(t.getText());//把文本强制转化为Double类型

}

if(e.getSource()==b[27]){//加法

t.setText(t.getText()+"+");

flag2=flag1;

a=1;

}

else if(e.getSource()==b[23]){//减法

t.setText(t.getText()+"-");

flag2=flag1;

a=2;

}

else if(e.getSource()==b[18]){//乘法

t.setText(t.getText()+"*");

flag2=flag1;

a=3;

}

else if(e.getSource()==b[13]){//除法

t.setText(t.getText()+"/");

flag2=flag1;

a=4;

}

else if(e.getSource()==b[14]){//百分数

t.setText(t.getText());

flag2=flag1;

a=5;

}

else if(e.getSource()==b[19]){//倒数

t.setText(t.getText());

flag3=flag1;

System.out.print(flag3);

if(flag3==0)

t.setText("0不能做除数");

else

{

flag3=1/flag3;

t.setText(flag3+"");

}

}

else if(e.getSource()==b[9]){//平方数

flag3=Math.sqrt(flag1);

t.setText(flag3+"");//把double类型的文本转化为字符串。

}

if(e.getSource()==b[24]){//等号按钮并且根据a的值确定运算符号。

if(a==1){//加法运算

flag3=flag1+flag2;//flag2是第一次输入的数据,flag1是第二次输入的数据

t.setText(flag3+"");//把double类型的文本转化为字符串

}

}

}

public static void main(String[] args){

new SheJi();

}

}

请帮忙看下代码!为什么不能进行运算呢?加法,平方,倒数都不能

java编写的计算器,能实现加减乘除。 //***该梦幻计算器与Windows附件自带计算器的标准版功能、界面相仿***// //******但还不支持键盘操作,如有需要,下一次等级将满足你**********// import java.awt.*; import java.lang.*; import javax.swing.*; import javax.swing.event.*; import java.awt.event.*; import java.awt.Component.*; import java.awt.color.*; import java.text.DecimalFormat; //*****************************************************************************// //*****************************************************************************// public class Calculator implements ActionListener //导入动作监听接口 { //******************************// //*****设计计算器界面的单位*****// JFrame frame; //定义框架 JTextField textAnswer; //定义输出显示框 JPanel panel, panel1, panel2, panel3;//定义面板作为子容器,从而达到要求的界面效果 JMenuBar mainMenu; JTextField textMemory; JLabel labelMemSpace; //labelMemSpace单纯做摆设,控制面板的形状 JButton buttonBk, buttonCe, buttonC; JButton button[]; JButton buttonMC, buttonMR, buttonMS, buttonMAdd; JButton buttonDot, buttonAddAndSub, buttonAdd, buttonSub, buttonMul,buttonDiv, buttonMod; JButton buttonSqrt, buttonDao, buttonEqual; JMenu editMenu, viewMenu, helpMenu; JMenuItem copyItem, pasteItem, tItem, sItem, numberGroup, topHelp, aboutCal,myCollege; DecimalFormat df; //设置数据输出精度 boolean clickable; //控制当前能否按键 double memoryd; //使用内存中存储的数字 int memoryi; double vard, answerd; //用来保存double型数据的中间值(vard)和最后结果(answerd) short key = -1, prekey = -1; //key用来保存当前进行何种运算,prekey用来保存前次进行何种运算 boolean clear = false; String copy; //做复制用 JTextArea help; //帮助 JScrollPane scrollHelp; static boolean One =true; //******************// //*****构造函数开始*****// public Calculator() { clickable = true; answerd = 0; frame = new JFrame("梦幻计算器--SWE08008"); frame.setResizable(false);//不允许改变计算器的大小 frame.setLocation(250,150);//设置计算器的起始位置 frame.setBackground(Color.YELLOW); df = new DecimalFormat("0.##############"); //设置数据输出精度(对于double型值)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值