目录
一、具体题目要求
二、题目分析
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判断输入数据类型方面有待学习,目标是实现输入数字自动分类计算。