Java程序3:二元运算,完成两个数的加减乘除、取余运算以及求最大公约数和,求最小公倍数(提供无交互和有交互测试)

要求:完成两个数的加减乘除、取余运算以及求最大公约数和求最小公倍数,

      此程序设计可以使程序便于拓展,当需要增加一个新的运算时,只需要添加一个类基础eryuan,以及修改main方法中的switch语句即可,不需要修改eryuan类。

下方提供了两对固定值的测试,也提供了交互键盘输入测试,要注意,下面这些方法要在同一个packge。

(1)抽象运算方法(新建名为eryuan的class)

public abstract class eryuan{

 private int num1;

 private int num2;

 private int max;

 private int min;

 public abstract int eryuan();

 public int getNum1() {

 return num1;

 }

 public void setNum1() {

 this.num1 = num1;

 }

 public int getNum2() {

 return num2;

 }

 public void setNum2() {

 this.num2 = num2;

 } 

 public eryuan(){

     super();

 }

 public eryuan(int num1,int num2){

 super();

 this.num1 = num1;

 this.num2 = num2;

 }

}

(2)继承生成加法类(新建名为add的class )

public class add extends eryuan {

 @Override

 public int eryuan() {

 return getNum1() + getNum2();

 }

 public add() {

 super(1,1);

 }

 public add(int num1,int num2) {

 super(num1,num2);

 }

 }

(3)继承生成除法类(新建名为 Div 的class)

public class Div extends eryuan {

 @Override

 public int eryuan() {

 return getNum1() / getNum2();

 }

 public Div() {

 super(1,1);

 }

 public Div(int num1,int num2) {

 super(num1,num2);

 }

}

(4)继承生成减法类(新建名为 Sub 的class)

public class Sub extends eryuan {

 @Override

 public int eryuan() {

 return getNum1() - getNum2();

 }

 public Sub() {

 super(1,1);

 }

 public Sub(int num1,int num2) {

 super(num1,num2);

 }

}

(5)继承生成乘法类(新建名为 Mul 的class)

public class Mul extends eryuan {

 @Override

 public int eryuan() {

 return getNum1() * getNum2();

 }

 public Mul() {

 super(1,1);

 }

 public Mul(int num1,int num2) {

 super(num1,num2);

 }

}

(6)继承生成取余类(新建名为quyu 的class)

public class quyu extends eryuan{

 @Override

 public int eryuan() {

 

 return getNum1() % getNum2();

 }

 public quyu() {

 super(1,1);

 }

 public quyu(int num1,int num2) {

 super(num1,num2);

 }

}

(7)继承生成最小公倍数类(新建名为 Gongbei 的class)

public class Gongbei extends eryuan {

 @Override

 public int eryuan() {

 int a = getNum1();

 int b = getNum2();

 int c = a * b;

 while(a - b!= 0) {

 if(a > b)

 a = a-b;

 else b =b-a; 

 }

 return c / b;

 }

 public Gongbei() {

 super(1,1);

 }

 public Gongbei(int num1,int num2) {

 super(num1,num2);

 }

 }

(8)继承生成最大公约数类(新建名为 Gongyu 的class)

public class Gongyu extends eryuan {

 @Override

 public int eryuan() {

 int a = getNum1();

 int b = getNum2();

 while(a - b!= 0) {

 if(a > b)

 a = a-b;

 else b =b-a; 

 }

 return b;

 }

 public Gongyu() {

 super(1,1);

 }

 public Gongyu(int num1,int num2) {

 super(num1,num2);

 }

}

(9)无交互的运行类(新建名为 eytest 的class)main方法,固定值输出

public class eytest {

 public static void main(String [] args) {

 int x, y;

 //第一组实验测试

 System.out.println("第一组数测试");

 x=15;y=12;

 eryuan er1,er2,er3,er4,er5,er6,er7;

 er1 = new add(x,y);

 System.out.printf("%d + %d = %d\n", er1.getNum1(),er1.getNum2(),

 er1.eryuan());

 

 er2 = new Sub(x,y);

     System.out.printf("%d - %d = %d\n", er2.getNum1(),er2.getNum2(),

 er2.eryuan());

     

     er3 = new Mul(x,y);

     System.out.printf("%d * %d = %d\n", er3.getNum1(),er3.getNum2(),

 er3.eryuan());

     

     er4 = new Div(x,y);

     System.out.printf("%d / %d = %d\n", er4.getNum1(),er4.getNum2(),

 er4.eryuan());

     

     er5 = new quyu(x,y); 

     System.out.printf("%d 取余 %d = %d\n", er5.getNum1(),er5.getNum2(),

 er5.eryuan());

     

     er6 = new Gongyu(x,y);

     System.out.printf("%d 和 %d 的最大公约数= %d\n", er6.getNum1(),er6.getNum2(),

 er6.eryuan());

     

     er7 = new Gongbei(x,y);

     System.out.printf("%d 和 %d 的最小公倍数= %d\n", er7.getNum1(),er7.getNum2(),

 er7.eryuan());

     

   //第二组实验测试

         System.out.println("第二组数测试");

    x=25;y=22;

    er1 = new add(x,y);

    System.out.printf("%d + %d = %d\n", er1.getNum1(),er1.getNum2(),

    er1.eryuan());

    

    er2 = new Sub(x,y);

        System.out.printf("%d - %d = %d\n", er2.getNum1(),er2.getNum2(),

    er2.eryuan());

        

        er3 = new Mul(x,y);

        System.out.printf("%d * %d = %d\n", er3.getNum1(),er3.getNum2(),

    er3.eryuan());

        

        er4 = new Div(x,y);

        System.out.printf("%d / %d = %d\n", er4.getNum1(),er4.getNum2(),

    er4.eryuan());

        

        er5 = new quyu(x,y); 

        System.out.printf("%d 取余 %d = %d\n", er5.getNum1(),er5.getNum2(),

    er5.eryuan());

        

        er6 = new Gongyu(x,y);

        System.out.printf("%d 和 %d 的最大公约数= %d\n", er6.getNum1(),er6.getNum2(),

    er6.eryuan());

        

        er7 = new Gongbei(x,y);

        System.out.printf("%d 和 %d 的最小公倍数= %d\n", er7.getNum1(),er7.getNum2(),

    er7.eryuan());        

 }

}

 代码运行结果:

(10)有交互的运行类(新建名为 eytest 的class)main方法,键盘输入,有菜单、可以进行无限组测试等交互测试

import java.util.Scanner;

public class eryuantest {

 public static void main(String [] args) {

 String w="";

 do {

 System.out.println("--------请选择运算-------------");

 System.out.println("1.加法运算");

 System.out.println("2.减法运算");

 System.out.println("3.乘法运算");

 System.out.println("4.除法运算"); System.out.println("5.取余运算");

 System.out.println("6.求最大公约数");

 System.out.println("7.求最小公倍数");

 System.out.println("------------------------"); 

 Scanner scan = new Scanner(System.in);

 Scanner input = new Scanner(System.in);

 int m = input.nextInt();

 System.out.println("请输入第一个运算数");

 int x = input.nextInt();

 System.out.println("请输入第二个运算数");

 int y = input.nextInt();

 eryuan er;

 switch(m) {

 case 1:{

 er = new add(x,y);

 System.out.printf("%d + %d = %d\n", er.getNum1(),er.getNum2(),

 er.eryuan());

 break;

 }

      case 2:{

     er = new Sub(x,y);

     System.out.printf("%d - %d = %d\n", er.getNum1(),er.getNum2(),

 er.eryuan());

     break;

      }

      case 3:{

     er = new Mul(x,y);

     System.out.printf("%d * %d = %d\n", er.getNum1(),er.getNum2(),

 er.eryuan());

     break;

      }

      case 4:{

     er = new Div(x,y);

     System.out.printf("%d / %d = %d\n", er.getNum1(),er.getNum2(),

 er.eryuan());

     break;

      }

      case 5:{

     er = new quyu(x,y);

     System.out.printf("%d 取余 %d = %d\n", er.getNum1(),er.getNum2(),

 er.eryuan());

     break;

      }

      case 6:{

     er = new Gongyu(x,y);

     System.out.printf("%d  %d 的最大公约数= %d\n", er.getNum1(),er.getNum2(),

 er.eryuan());

     break;

      }

      case 7:{

     er = new Gongbei(x,y);

     System.out.printf("%d  %d 的最小公倍数= %d\n", er.getNum1(),er.getNum2(),

 er.eryuan());

     break;

      }

 }

 System.out.print("是否继续下一组?");

       System.out.println("是,请输入(Y);否,请输入(N)\n");

       w = scan.next();

     } while (w.equals("Y"));

}

}

代码运行结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值