java可以实现两个数的加·减·乘·除·运算!!!用类的方法做

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java可以实现两个数的加·减·乘·除·运算!!!用类的方法做相关的知识,希望对你有一定的参考价值。

目老师要求小菜使用面向对象的思想编写一个计算器,可以实现的加·减·乘·除·运算。如果你是小菜如何实施?写出你的思路

package 娱乐;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.text.DecimalFormat;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.UIManager;

public class 计算_复杂 extends JFrame implements ActionListener, ItemListener
private JButton an[];

private JButton qingkong, zh;

private JTextField k;

private JPanel rq1, rq2, rq3;

int zz = 1;

private String string[] = "7", "8", "9", "/", "6", "5", "4", "*", "3",
"2", "1", "-", "0", ".", "=", "+" ;

private String s = "", shu1 = "", shu2 = "", shu3 = "";

private static int fo = 0;

JComboBox a;

private boolean ff = true;

public 计算_复杂()
super("简易计算器");
Container c = getContentPane();
c.setLayout(new FlowLayout());
rq1 = new JPanel();
k = new JTextField(13);
rq1.add(k);
qingkong = new JButton("C");
rq1.add(qingkong);
c.add(rq1);
rq3 = new JPanel();
a = new JComboBox();
a.addItem("10进制转换为2进制");
a.addItem("10进制转换为8进制");
a.addItem("10进制转换为16进制");
a.addItem("2进制转换为8进制");
a.addItem("2进制转换为10进制");
a.addItem("2进制转换为16进制");
a.addItem("8进制转换为2进制");
a.addItem("8进制转换为10进制");
a.addItem("8进制转换为16进制");
a.addItem("16进制转换为2进制");
a.addItem("16进制转换为8进制");
a.addItem("16进制转换为10进制");
rq3.add(a);
zh = new JButton("转");
rq3.add(zh);
c.add(rq3);
rq2 = new JPanel();
rq2.setLayout(new GridLayout(4, 4, 10, 10));
an = new JButton[string.length];
for (int i = 0; i < string.length; i++)
an[i] = new JButton(string[i]);
an[i].addActionListener(this);
rq2.add(an[i]);

c.add(rq2);
qingkong.addActionListener(this);
zh.addActionListener(this);
a.addItemListener(this);
setSize(200, 250);
setVisible(true);
try
JMenuItem itemNative=new JMenuItem("系统平台风格");
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); // 设置界面样式
catch (Exception e)
e.printStackTrace();

setSize(220, 270);
setVisible(true);


public static void main(String[] args)
计算_复杂 s = new 计算_复杂();
s.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


public void itemStateChanged(ItemEvent event)
if (event.getStateChange() == ItemEvent.SELECTED)
if (a.getSelectedItem().equals("10进制转换为2进制"))
zz = 1;
if (a.getSelectedItem().equals("10进制转换为8进制"))
zz = 2;
if (a.getSelectedItem().equals("10进制转换为16进制"))
zz = 3;
if (a.getSelectedItem().equals("2进制转换为8进制"))
zz = 4;
if (a.getSelectedItem().equals("2进制转换为10进制"))
zz = 5;
if (a.getSelectedItem().equals("2进制转换为16进制"))
zz = 6;
if (a.getSelectedItem().equals("8进制转换为2进制"))
zz = 7;
if (a.getSelectedItem().equals("8进制转换为10进制"))
zz = 8;
if (a.getSelectedItem().equals("8进制转换为16进制"))
zz = 9;
if (a.getSelectedItem().equals("16进制转换为2进制"))
zz = 10;
if (a.getSelectedItem().equals("16进制转换为8进制"))
zz = 11;
if (a.getSelectedItem().equals("16进制转换为10进制"))
zz = 12;



public void actionPerformed(ActionEvent e)
if (!(e.getSource() == an[3] || e.getSource() == an[7]
|| e.getSource() == an[11] || e.getSource() == an[13]
|| e.getSource() == an[14] || e.getSource() == an[15] || e
.getSource() == qingkong|| e.getSource() == zh))
if (e.getSource() == an[12])
s += e.getActionCommand();
char a = s.charAt(0);
if (a == '0')
s = "0.";
k.setText(s);

else
k.setText(s);
ff = true;



else
s += e.getActionCommand();
k.setText(s);
ff = true;

else
if (e.getSource() == zh)
if (k.getText().equals(""))
;
else

jinzhi();
fo = 0;
shu1 = "";
s = "";


if (e.getSource() == qingkong)
k.setText("");
fo = 0;
shu1 = "";
s = "";

if (e.getSource() == an[13])
String ss = s;
ss += e.getActionCommand();
char a = ss.charAt(0);
if (a == '.')
s = "";
else
if (ss.matches("[0-9]."))
s += e.getActionCommand();
k.setText(s);




if (ff)
ff = false;
if (e.getSource() == an[3])
if (k.getText().equals(""))
;
else

if (shu1.equals(""))
shu1 = k.getText();
k.setText("/");
s = "";
fo = 3;
else
shu2 = k.getText();
jishu(fo, shu1, shu2);
fo = 3;



if (e.getSource() == an[7])
if (k.getText().equals(""))
;
else
if (shu1.equals(""))
shu1 = k.getText();
k.setText("*");
s = "";
fo = 7;
else
shu2 = k.getText();
jishu(fo, shu1, shu2);
fo = 7;



if (e.getSource() == an[11])
if (k.getText().equals(""))
;
else
if (shu1.equals(""))
shu1 = k.getText();
k.setText("-");
s = "";
fo = 11;
else
shu2 = k.getText();
jishu(fo, shu1, shu2);
fo = 11;



if (e.getSource() == an[15])
if (k.getText().equals(""))
;
else
if (shu1.equals(""))
shu1 = k.getText();
k.setText("+");
s = "";
fo = 15;
else
shu2 = k.getText();
jishu(fo, shu1, shu2);
fo = 15;



if (e.getSource() == an[14])
if (k.getText().equals("") || shu1.equals(""))
ff = true;
else
shu2 = k.getText();
jishu(fo, shu1, shu2);






public void jishu(int fj, String s1, String s2)
DecimalFormat twoDigits = new DecimalFormat("0.00");
double a, b;
a = Double.parseDouble(s1);
b = Double.parseDouble(s2);
switch (fj)
case 3:
shu3 = twoDigits.format((double) (a / b));
k.setText(shu3);
break;
case 7:
shu3 = twoDigits.format((double) (a * b));
k.setText(shu3);
break;
case 11:
shu3 = twoDigits.format((double) (a - b));
k.setText(shu3);
break;
case 15:
shu3 = twoDigits.format((double) (a + b));
k.setText(shu3);
break;

s = "";
shu1 = shu3;
shu2 = "";


public void jinzhi()
if (zz == 1)
k.setText(Integer.toBinaryString(Integer.parseInt(k.getText())));
else if (zz == 2)
k.setText(Integer.toOctalString(Integer.parseInt(k.getText())));
else if (zz == 3)
k.setText(Integer.toHexString(Integer.parseInt(k.getText())));
else if (zz == 4)
int a = j1(k.getText(), "[0-1]+", 2);
k.setText(Integer.toOctalString(a));
else if (zz == 5)
j1(k.getText(), "[0-1]+", 2);

else if (zz == 6)
int a = j1(k.getText(), "[0-1]+", 2);
k.setText(Integer.toHexString(a));
else if (zz == 7)
int a = j1(k.getText(), "[0-7]+", 8);
k.setText(Integer.toBinaryString(a));
else if (zz == 8)
j1(k.getText(), "[0-7]+", 8);
else if (zz == 9)
int a = j1(k.getText(), "[0-7]+", 8);
k.setText(Integer.toHexString(a));
else if (zz == 10)
int a = j2();
k.setText(Integer.toBinaryString(a));
else if (zz == 11)
int a = j2();
k.setText(Integer.toOctalString(a));
else if (zz == 12)
j2();



public int j1(String zhuanhuan, String a1, int a3)
if (zhuanhuan.matches(a1))
int bb, gg = 0, cc = 1;
String s = zhuanhuan;
StringBuffer ss = new StringBuffer(s);

ss.reverse();
for (int i = 0; i < ss.length(); i++)
String jj = ss.charAt(i) + "";
bb = Integer.parseInt(jj);
if (i == 0)
gg += bb * cc;
else
gg += bb * (cc *= a3);

k.setText(gg + "");
return gg;

return 0;


public int j2()
if (k.getText().matches("[0-9,a,b,c,d,e,f]+"))
int bb, gg = 0, cc = 1;
String s = k.getText();
StringBuffer ss = new StringBuffer(s);
ss.reverse();
for (int i = 0; i < ss.length(); i++)
String jj = ss.charAt(i) + "";
System.out.println(jj);
if (jj.equals("a"))
jj = "10";
if (jj.equals("b"))
jj = "11";
if (jj.equals("c"))
jj = "12";
if (jj.equals("d"))
jj = "13";
if (jj.equals("e"))
jj = "14";
if (jj.equals("f"))
jj = "15";
System.out.println(jj);
bb = Integer.parseInt(jj);
if (i == 0)
gg += bb * cc;
else
gg += bb * (cc *= 16);

k.setText(gg + "");
return gg;

return 0;




// 这是以前在学校的时候写的..个人爱好..所以写的比较复杂点..
//楼下的说什么什么..看似简单.你自己谢谢就明白了..
//拿个写好的计算器按2+2+2+2+++++ = 看写的怎么计算..一直按小数点.
//楼上的那个.输入一个 9+9= 在点清空.在点+ 在点= 就知道.程序有问题了.清空有问题
参考技术A 首先可以把计算器看成是一个对象就是一个类,它有加、减、乘、除功能,这四个就是这个类的方法;你可以给这个类定义两个成员变量 int x、int y
然后分别用这四个方法对X 、Y 实行加、减、乘、除并返回其值
代码大概如下:
class Counter
private int x;
private int y;
public Counter()


public Counter(int x,int y)
this.x=x;
this.y=y;

public double adding() //加运算
return x+y;

public double minus() //减运算
return x-y;

public double times() //乘运算
return x*y;

public double divide() //除运算
return x/y;



//测试类
public class Test
public static void main(String[] args)
Counter c=new Counter(5,4);//实例化
System.out.println(c.adding());//输出加的结果
System.out.println(c.minus());//输出减的结果
System.out.println(c.times());//输出乘的结果
System.out.println(c.divide());//输出除的结果



希望对你有帮助
参考技术B Good
首先可以把计算器看成是一个对象就是一个类,它有加、减、乘、除功能,这四个就是这个类的方法;你可以给这个类定义两个成员变量 int x、int y
然后分别用这四个方法对X 、Y 实行加、减、乘、除并返回其值
参考技术C java本身就是面向对象的。然后把加减乘除分别写成四个方法,当需要时再调用就行了。 参考技术D 都这么多人回答过拉~~~
那个写的比较多的比较复杂了,还用到了JFrame

其实就是一个class,private两个数
public class名里 this。。。=。。。
然后定义4个int方法 返还 加减乘除值

这个计算机就算写完了

201542010208201571030331软件工程结对项目

https://github.com/gsdz/yunsuan.git

一:需求分析

       1:  编写小学四则运算测试系统,要求完成两位数的加,减,乘,除四则运算。能根据用户的输入来选择运算种类,用户输入答案后可以判断正误,做完一次测试后,用户可以决定是否继续进行下一次运算。

      2:题型选择界面设计,选择加、减、乘、除运算。

      3:系统随机产生一百以内的两个数进行运算。

      4:练习时,用户从键盘输入结果,正确和错误均有提示,错误的话提示下会有正确的结果。

 二:设计流程图

 

三:核心代码:

 

package jiedui;

import java.util.Random;
import java.util.Scanner;

public class jiedui {

public static void main(String[] args) {
/**
* 一共循环10次。
*/
int rightNum = 0;//正确次数
int wrongNum = 0;//错误次数
for (int i =1; i <= 10; i++) {
System.out.println("请计算第" + i + "道题:");// 做到第几题,循环输出
int number1 =(int) (Math.random() * 10);
int number2 =(int) (Math.random() * 10);
Random num = new Random();// 生成随机运算符
int index = num.nextInt(3) + 1;
char[] fuhaos = { \'+\', \'-\', \'*\', \'/\' };
String fuhao = String.valueOf(fuhaos[index]);
Scanner scan = new Scanner(System.in);
if (fuhao.equals("+")) { // 进行加法运算
System.out.println(number1 + "+" + number2 + "=");
int input = scan.nextInt();
int sum = number1 + number2;
if (sum==input) {
System.out.println("正确");
rightNum++;
} else {
System.out.println("错误");
wrongNum++;
}
System.out.println("正确答案是:" + sum);
}else if (fuhao.equals("-")) { // 进行减法运算
System.out.println(number1 + "-" + number2 + "=");
int input = scan.nextInt();
int sum = number1 - number2;
if (sum==input) {
System.out.println("正确");
rightNum++;
} else {
System.out.println("错误");
wrongNum++;
}
System.out.println("正确答案是:" + sum);
}else if (fuhao.equals("*")) { // 进行乘法运算
System.out.println(number1 + "*" +number2 + "=");
int input = scan.nextInt();
int sum = number1 * number2;
if (sum==input) {
System.out.println("正确");
rightNum++;
} else {
System.out.println("错误");
wrongNum++;
}
System.out.println("正确答案是:" + sum);
}else { // 进行除法运算
System.out.println(number1 + "/" + number2 + "=");
int input = scan.nextInt();
int sum = number1 / number2;
if (sum==input) {
System.out.println("正确");
rightNum++;
} else {

System.out.println("错误");
wrongNum++;
}
System.out.println("正确答案是:" + sum);
}
}
System.out.println("做对" + rightNum + "题");
System.out.println("做错" + wrongNum + "题");
}
}

四:测试结果:

 

五;psp图

PSP2.1

任务内容

计划共完成需要的时间(min)

实际完成需要的时间(min)

Planning

计划

30

26

·       Estimate

·  估计这个任务需要多少时间,并规划大致工作步骤

30

26

Development

开发

200

200

··       Analysis

  需求分析 (包括学习新技术)

40

40

·       Design Spec

·  生成设计文档

30

25

·       Design Review

·  设计复审 (和同事审核设计文档)

20

15

·       Coding Standard

  代码规范 (为目前的开发制定合适的规范)

5

5

·       Design

  具体设计

350

280

·       Coding

  具体编码

150

140

·       Code Review

·  代码复审

10

8

·       Test

·  测试(自我测试,修改代码,提交修改)

30

30

Reporting

报告

33

30

··       Test Report

·  测试报告

3

2

·       Size Measurement

  计算工作量

10

10

·       Postmortem & Process Improvement Plan

·  事后总结 ,并提出过程改进计划

25

20

六:伙伴的评价

跟我结伴的是201571030331 益西卓嘎。我的伙伴有很独特的想法和主见,此次实验中有了我的伙伴实验的效果和各个方面大大不同,实验中遇到很多困难但我们依然没放弃,一直坚持真的很感谢我的伙伴。

这次的实验中遇到很多困难,因为我跟伙伴的java基础薄弱的问题而没能实现界面。但是和好伙伴一起完成这次作业是跟以往大大不同,有什么问题和她一起解决,实验效率也提高了许多。我发现合作和个人之间有很大区别。

 

以上是关于java可以实现两个数的加·减·乘·除·运算!!!用类的方法做的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript之undefined的加(+)减(-)乘(*)除(/)和取模(%)运算

JavaScript之null的加(+)减(-)乘(*)除(/)和取模(%)运算

201571030331/201542010208益西卓嘎

201542010208201571030331软件工程结对项目

用java 编写一个复数类

用python编程语言写两个数的加,减,乘,除的函数,然后用这些函数,完成简单的计算怎么写?要具体的代码?