初学Java做的一个计算器四则运算题目,要求使用继承和重载

目录

一、具体题目要求

二、题目分析

1.创建类caculate

2.创建subcal

3.重载函数

4.main函数

三、上机演示

1.计算整数

2.计算小数

 四、代码

1.类caculate

2.类subcal

五、总结


一、具体题目要求

1.定义一个类caculate,实现整数加法、减法运算。

2.新建subcal类,继承caculate类,在里面添加乘法和除法运算。

3.重载subcal类,实现浮点数的四则运算。

4.键盘输入数据。

二、题目分析

我用的是Eclipse的Java IDE。开始先建立一个空的project,然后在src下建立类caculate和类subcal。由于类caculate只包含整数加减法,然后它还要被类subcal继承,所以main函数应该写在类subcal里面。

这样,思路就是:

1.创建类caculate

先在src下创建类caculate,里面直接写加减运算的方法,如下所示:

package caculate_test3;    //这是我的project名字,project下每个class都需要它。

public class caculate {    //定义一个类caculate,注意类名要和文件名一致(caculate.java)。
	public int add(int a,int b) {    //定义整数加法运算。
		return a+b;
	}
	public int reduce(int a,int b) {    //定义整数减法运算。
		return a-b;
	}
}

2.创建subcal

然后在src下创建类subcal,直接用extends继承类caculate:

package caculate_test3;

public class subcal extends caculate {    //类subcal继承类caculate。
    
}

然后在类subcal里定义整数的乘除运算:

public int ride(int a,int b) {    //定义整数乘法。
    return a*b;
}
public int except(int a,int b) {    //定义整数除法。
	return a/b;
}

3.重载函数

接下来就是重载环节了,要求重载来实现浮点数的四则运算,那就直接在类subcal里接着创建浮点型的四则运算函数,用一样的函数名,只是参数数据类型都由int变成了double(由于不会用程序判断输入字符来选择整型或者是浮点型,索性参数名也换了,后续人工case分配一下):

public double add(double a1,double b1) {    //定义浮点数加法。
	return a1+b1;
}
public double reduce(double a1,double b1) {    //定义浮点数减法。
	return a1-b1;
}
public double ride(double a1,double b1) {    //定义浮点数乘法。
	return a1*b1;
}
public double except(double a1,double b1) {    //定义浮点数除法。
	return a1/b1;
}

4.main函数

下一步就是喜闻乐见的main函数环节了:

public static void main(String[] args) {    //创建main函数。
	Scanner scan = new Scanner(System.in);    //用scan代替Scanner。
	subcal sub = new subcal();    //用sub代替subcal。
	while(true) {    //创建while默认死循环,用于循环计算,后面用break手动跳出。
		System.out.println("输入数字:1.计算整数,2.计算小数");
		int k = scan.nextInt();    //用nextInt从键盘获得输入数字k,
                                   //需要在此类的文件里import Scanner。

		switch(k) {    //人工选择计算整数还是小数。
		case 1 :
			System.out.println("现在计算整数,输入a和b,用空格隔开:");
			int a = scan.nextInt();
			int b = scan.nextInt();
			//scan.close();
			System.out.println("a+b=" + sub.add(a, b));
			System.out.println("a-b=" + sub.reduce(a, b));
			System.out.println("a*b=" + sub.ride(a,b));
			System.out.println("a/b=" + sub.except(a, b));
			break;
		case 2 :
			System.out.println("现在计算小数,输入a和b,用空格隔开:");
			double a1 = scan.nextDouble();
			double b1 = scan.nextDouble();
			System.out.println("a+b=" + sub.add(a1, b1));
			System.out.println("a-b=" + sub.reduce(a1, b1));
			System.out.println("a*b=" + sub.ride(a1,b1));
			System.out.println("a/b=" + sub.except(a1, b1));
			break;
		}
			
		System.out.println("是否继续?输入y继续计算,输入其他字符退出");
		String input = scan.next();    //用next获取键盘输入字符。
		char go = input.charAt(0);    //转成char,参数0表示获取第0个字符。
		if(go != 'y') {    //计算完毕,询问是否继续计算,否就用break跳出循环。
			break;
		}
	}
	scan.close();    //关闭键盘扫描,前面不能关,否则会导致空的输入。
}

三、上机演示

1.计算整数

2.计算小数

 

 四、代码

1.类caculate

package caculate_test3;

public class caculate {
	public int add(int a,int b) {
		return a+b;
	}
	public int reduce(int a,int b) {
		return a-b;
	}
}

2.类subcal

package caculate_test3;
import java.util.Scanner;

public class subcal extends caculate {
	public int ride(int a,int b) {
		return a*b;
	}
	public int except(int a,int b) {
		return a/b;
	}
	
	public double add(double a1,double b1) {
		return a1+b1;
	}
	public double reduce(double a1,double b1) {
		return a1-b1;
	}
	public double ride(double a1,double b1) {
		return a1*b1;
	}
	public double except(double a1,double b1) {
		return a1/b1;
	}
	
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		subcal sub = new subcal();
		while(true) {
			System.out.println("输入数字:1.计算整数,2.计算小数");
			int k = scan.nextInt();

			switch(k) {
			case 1 :
				System.out.println("现在计算整数,输入a和b,用空格隔开:");
				int a = scan.nextInt();
				int b = scan.nextInt();
				//scan.close();
				System.out.println("a+b=" + sub.add(a, b));
				System.out.println("a-b=" + sub.reduce(a, b));
				System.out.println("a*b=" + sub.ride(a,b));
				System.out.println("a/b=" + sub.except(a, b));
				break;
			case 2 :
				System.out.println("现在计算小数,输入a和b,用空格隔开:");
				double a1 = scan.nextDouble();
				double b1 = scan.nextDouble();
				System.out.println("a+b=" + sub.add(a1, b1));
				System.out.println("a-b=" + sub.reduce(a1, b1));
				System.out.println("a*b=" + sub.ride(a1,b1));
				System.out.println("a/b=" + sub.except(a1, b1));
				break;
			}
			
			System.out.println("是否继续?输入y继续计算,输入其他字符退出");
			String input = scan.next();
			char go = input.charAt(0);
			if(go != 'y') {
				break;
			}
		}
		scan.close();
	}
}

五、总结

初学Java,不足之处欢迎大佬前来指正。感觉在instanceof判断输入数据类型方面有待学习,目标是实现输入数字自动分类计算。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值