java加法计算器_Java加法计算器问题。

这篇博客探讨了一个Java实现的简单计算器程序存在的三个问题:无法清除屏幕上的数字、无法正常关闭窗口以及计算错误。博主寻求帮助修改代码,以便实现数字覆盖、正确关闭窗口以及支持多位数运算。程序使用JFrame和按钮组件创建了一个3*3的布局,并实现了ActionListener事件监听。
摘要由CSDN通过智能技术生成

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

自己写了个加法计算器,可以运行,但有三个问题没解决。

代码如下:

import java.awt.Button;

import java.awt.Frame;

import java.awt.GridLayout;

import java.awt.Panel;

import java.awt.TextField;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

public class Calculator extends WindowAdapter implements ActionListener{

private double result = 0;

private double data1 = 0;

private boolean resultIndicate = false;

private Frame f;

private Button b1, b2, b3, b4, b5, b6, b7, b8, b9;

private TextField t;

private Panel p,p1,p2;

private char prec='+';

private int zhi=0;

private int nextzhi=0;

private int sum=0;

static public void main(String args[]) {

Calculator cc = new Calculator();

cc.go();

}

public void go()

{

f = new Frame("Calculator");

p = new Panel();

p1 = new Panel();

p2 = new Panel();

p.setLayout(new GridLayout(3,3));

p2.setLayout(new GridLayout(1, 1));

p1.setLayout(new GridLayout(2, 1));

b1 = new Button("1");

b2 = new Button("2");

b3 = new Button("3");

b4 = new Button("4");

b5 = new Button("5");

b6 = new Button("6");

b7 = new Button("7");

b8 = new Button("8");

b9 = new Button("9");

t = new TextField("0",30);

f.add(t,"South");

f.add(p,"Center");

f.add(p1,"East");

f.add(p2,"North");

p.add(b1);

p.add(b2);

p.add(b3);

p.add(b4);

p.add(b5);

p.add(b6);

p.add(b7);

p.add(b8);

p.add(b9);

b1.addActionListener(this);

b2.addActionListener(this);

b3.addActionListener(this);

b4.addActionListener(this);

b5.addActionListener(this);

b6.addActionListener(this);

b7.addActionListener(this);

b8.addActionListener(this);

b9.addActionListener(this);

f.setSize(250, 190);

f.setVisible(true);

}

public void actionPerformed(ActionEvent es) {

// TODO Auto-generated method stub

if(es.getSource()==b1){t.setText(t.getText()+1);}

if(es.getSource()==b2){t.setText(t.getText()+2);}

if(es.getSource()==b3){t.setText(t.getText()+3);}

if(es.getSource()==b4){t.setText(t.getText()+4);}

if(es.getSource()==b5){t.setText(t.getText()+5);}

if(es.getSource()==b6){t.setText(t.getText()+6);}

if(es.getSource()==b7){t.setText(t.getText()+7);}

if(es.getSource()==b8){t.setText(t.getText()+8);}

if(es.getSource()==b9){t.setText(t.getText()+9);}

zhi=Integer.parseInt(t.getText());

StringBuffer sb=new StringBuffer(t.getText());

int length=sb.length();

sb.deleteCharAt(length-1);

t.setText(sb.toString());

nextzhi=Integer.parseInt(t.getText());

sum=zhi+nextzhi;

t.setText(sum+"");

}

public void windowClosing(WindowEvent e) {

System.exit(0);

}

}

目标是用JFrame创建出一个3*3的计算器,按动上面的数字,在底下的文本框中显示结果。

如:第一次按下1后显示1,第二次按下2后显示3,同时擦去前面的1。以此类推。

但我写的这个有三个问题:

一、无法擦去前面的数字(如按下1后,显示1;第二次按下1后,显示的是12而非2。)

二、无法正常关闭,只能结束eclipse程序后才能关掉(我最后明明写了windowclosing了啊,怎么还会出现这个问题?)

三、计算数值除无法擦去之外,不支持多次点击(如果三个数字过大的话就会出错)

请高手帮忙看下这个程序应该怎么改,,谢谢了

如果可以的话 最好把改好的加上注释发上来

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java复数计算器的设计可以参考以下步骤: 1. 定义复数类 Complex,包含实部和虚部两个属性,以及一些基本的数学方法,例如加、减、乘、除、取模、取幂等操作。 2. 设计复数计算器界面,可以使用 Swing 或 JavaFX 实现。界面包含输入框、计算按钮、结果显示框等组件。 3. 实现计算逻辑,包括获取用户输入的复数,进行计算,以及将结果显示在结果显示框中。 4. 在计算逻辑中,需要对用户输入的复数进行解析,可以使用正则表达式或者字符串分割等方式提取实部和虚部。 5. 对于除法运算,需要考虑除数为零的情况,可以在计算逻辑中添加异常处理机制,避免程序崩溃。 6. 对于取模运算,需要注意取模值为负数的情况,可以在计算逻辑中进行判断并做特殊处理。 7. 在运算结果显示框中,可以添加一个复制按钮,方便用户将结果复制到剪贴板中。 总体来说,Java复数计算器的设计思路与普通计算器类似,需要注意复数的特殊运算规则和异常情况处理。 ### 回答2: Java复数计算器的设计主要涉及到复数数学运算的实现。首先,我们需要定义一个复数类,包含实部和虚部两个属性,并提供相应的访问方法。 复数类的设计如下: ```java public class ComplexNumber { private double realPart; // 实部 private double imaginaryPart; // 虚部 public ComplexNumber(double realPart, double imaginaryPart) { this.realPart = realPart; this.imaginaryPart = imaginaryPart; } public double getRealPart() { return realPart; } public void setRealPart(double realPart) { this.realPart = realPart; } public double getImaginaryPart() { return imaginaryPart; } public void setImaginaryPart(double imaginaryPart) { this.imaginaryPart = imaginaryPart; } } ``` 接下来,我们可以在计算器类中定义各种复数运算的方法,例如复数的加法、减法、乘法和除法。 计算器类的设计如下: ```java public class ComplexCalculator { public static ComplexNumber add(ComplexNumber num1, ComplexNumber num2) { double realPart = num1.getRealPart() + num2.getRealPart(); double imaginaryPart = num1.getImaginaryPart() + num2.getImaginaryPart(); return new ComplexNumber(realPart, imaginaryPart); } public static ComplexNumber subtract(ComplexNumber num1, ComplexNumber num2) { double realPart = num1.getRealPart() - num2.getRealPart(); double imaginaryPart = num1.getImaginaryPart() - num2.getImaginaryPart(); return new ComplexNumber(realPart, imaginaryPart); } public static ComplexNumber multiply(ComplexNumber num1, ComplexNumber num2) { double realPart = num1.getRealPart() * num2.getRealPart() - num1.getImaginaryPart() * num2.getImaginaryPart(); double imaginaryPart = num1.getRealPart() * num2.getImaginaryPart() + num1.getImaginaryPart() * num2.getRealPart(); return new ComplexNumber(realPart, imaginaryPart); } public static ComplexNumber divide(ComplexNumber num1, ComplexNumber num2) { double divisor = num2.getRealPart() * num2.getRealPart() + num2.getImaginaryPart() * num2.getImaginaryPart(); double realPart = (num1.getRealPart() * num2.getRealPart() + num1.getImaginaryPart() * num2.getImaginaryPart()) / divisor; double imaginaryPart = (num1.getImaginaryPart() * num2.getRealPart() - num1.getRealPart() * num2.getImaginaryPart()) / divisor; return new ComplexNumber(realPart, imaginaryPart); } } ``` 以上代码实现了复数的加法、减法、乘法和除法运算。可以根据实际需求进一步扩展其他复数运算方法。 ### 回答3: Java复数计算器的设计可以参考以下步骤: 1. 创建一个名为Complex的类,该类用于表示复数。该类应该包含两个属性,一个表示实部的double类型变量real,一个表示虚部的double类型变量imaginary。同时,还应该提供构造方法,用于初始化实部和虚部。 2. 在Complex类中,需要提供一些基本的运算方法,例如加法、减法、乘法和除法。这些方法应该接受一个Complex类型的参数,并返回一个新的Complex类型对象作为运算结果。这些方法的实现可以根据复数的加减乘除规则进行计算。 3. 在Complex类中,可以提供一些辅助方法,例如获取实部、获取虚部、获取共轭复数等。这些方法可以根据实部和虚部进行相应的返回。 4. 创建一个名为Calculator的类,该类用于进行复数的计算操作。在Calculator类中,可以提供一些静态方法用于进行复数的加减乘除计算。这些方法应该接受两个Complex类型的参数,并返回一个新的Complex类型对象作为运算结果。 5. 在主程序中,可以实例化Complex对象,并调用相应的方法进行复数的计算操作。例如,可以使用Complex类的构造方法创建两个复数对象,然后使用Calculator类的静态方法进行加法、减法、乘法和除法计算,并输出结果。 总结:通过创建一个Complex类来表示复数,并在该类中提供各种操作方法,用于进行复数的加减乘除计算。同时,创建一个Calculator类,用于调用Complex类的方法进行复数的计算操作。最后,在主程序中实例化对象,并进行相应的复数计算。这样就可以实现一个Java复数计算器的设计。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值