鱼C论坛

 找回密码
 立即注册
查看: 1205|回复: 1

[已解决]面向对象的一道题

[复制链接]
发表于 2023-11-25 07:38:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
现需要编写一个简易快递计价程序。具体来说:

1、抽象快递类Express,其包含一个属性int weight表示快递重量(单位为kg),一个方法getWeight()用于返回快递重量和一个抽象方法getTotal()用于计算快递运费。

2、两个类继承Express,分别是:
(a)顺路快递SLExpress:计价规则为首重(1kg)12元,每增加1kg费用加2元。
(b)地地快递DDExpress:计价规则为首重(1kg)5元,每增加1kg费用加1元。

3、菜菜驿站类CaicaiStation,提供静态方法 int calculate(Express[] ex) 用于计算所有快递的费用。
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        Express[] ex = new Express[n];
        for (int i = 0; i < ex.length; i++) {
            if (sc.next().equals("SL"))
                ex[i] = new SLExpress(sc.nextInt());
            else
                ex[i] = new DDExpress(sc.nextInt());
        }

        System.out.println(CaicaiStation.calculate(ex));
        sc.close();
    }
}
/* 请在这里填写答案 */
最佳答案
2023-11-25 07:38:50
在菜菜驿站类CaicaiStation中,我们需要提供一个静态方法int calculate(Express ex),用于计算所有快递的费用。可以按照以下步骤来实现:

1. 在Express类中,添加一个抽象方法getTotal(),用于计算快递运费。同时添加一个getWeight()方法,用于返回快递重量。
public abstract class Express {    private int weight;    public Express(int weight) {        this.weight = weight;    }    public int getWeight() {        return weight;    }    public abstract int getTotal();}
2. 创建两个子类:SLExpress和DDExpress,分别继承Express类,并实现getTotal()方法。
public class SLExpress extends Express {    public SLExpress(int weight) {        super(weight);    }    @Override    public int getTotal() {        int weight = getWeight();        int basePrice = 12; // 首重费用        int additionalPrice = 2; // 每增加1kg的费用        return basePrice + additionalPrice * (weight - 1);    }}public class DDExpress extends Express {    public DDExpress(int weight) {        super(weight);    }    @Override    public int getTotal() {        int weight = getWeight();        int basePrice = 5; // 首重费用        int additionalPrice = 1; // 每增加1kg的费用        return basePrice + additionalPrice * (weight - 1);    }}
3. 在CaicaiStation类中,实现静态方法calculate(Express ex),用于计算所有快递的费用。
public class CaicaiStation {    public static int calculate(Express ex) {        return ex.getTotal();    }}
4. 在Main类中,根据用户输入的快递信息,创建对应的SLExpress或DDExpress对象,并调用CaicaiStation.calculate()方法计算费用。
import java.util.Scanner;public class Main {    public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        int n = sc.nextInt();        Express[] ex = new Express[n];                for (int i = 0; i < n; i++) {            if (sc.next().equals("SL")) {                int weight = sc.nextInt();                ex[i] = new SLExpress(weight);            } else {                int weight = sc.nextInt();                ex[i] = new DDExpress(weight);            }        }        for (int i = 0; i < n; i++) {            System.out.println(CaicaiStation.calculate(ex[i]));        }        sc.close();    }}
这样,就可以根据用户输入的快递信息计算出对应的运费了。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-25 07:38:50 | 显示全部楼层    本楼为最佳答案   
在菜菜驿站类CaicaiStation中,我们需要提供一个静态方法int calculate(Express ex),用于计算所有快递的费用。可以按照以下步骤来实现:

1. 在Express类中,添加一个抽象方法getTotal(),用于计算快递运费。同时添加一个getWeight()方法,用于返回快递重量。
public abstract class Express {    private int weight;    public Express(int weight) {        this.weight = weight;    }    public int getWeight() {        return weight;    }    public abstract int getTotal();}
2. 创建两个子类:SLExpress和DDExpress,分别继承Express类,并实现getTotal()方法。
public class SLExpress extends Express {    public SLExpress(int weight) {        super(weight);    }    @Override    public int getTotal() {        int weight = getWeight();        int basePrice = 12; // 首重费用        int additionalPrice = 2; // 每增加1kg的费用        return basePrice + additionalPrice * (weight - 1);    }}public class DDExpress extends Express {    public DDExpress(int weight) {        super(weight);    }    @Override    public int getTotal() {        int weight = getWeight();        int basePrice = 5; // 首重费用        int additionalPrice = 1; // 每增加1kg的费用        return basePrice + additionalPrice * (weight - 1);    }}
3. 在CaicaiStation类中,实现静态方法calculate(Express ex),用于计算所有快递的费用。
public class CaicaiStation {    public static int calculate(Express ex) {        return ex.getTotal();    }}
4. 在Main类中,根据用户输入的快递信息,创建对应的SLExpress或DDExpress对象,并调用CaicaiStation.calculate()方法计算费用。
import java.util.Scanner;public class Main {    public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        int n = sc.nextInt();        Express[] ex = new Express[n];                for (int i = 0; i < n; i++) {            if (sc.next().equals("SL")) {                int weight = sc.nextInt();                ex[i] = new SLExpress(weight);            } else {                int weight = sc.nextInt();                ex[i] = new DDExpress(weight);            }        }        for (int i = 0; i < n; i++) {            System.out.println(CaicaiStation.calculate(ex[i]));        }        sc.close();    }}
这样,就可以根据用户输入的快递信息计算出对应的运费了。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 16:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表