import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int sum = 0; Express[] express = new Express[n]; for (int i = 0; i < n; i++) { String name = scanner.next(); if (name == "SL") { express[i] = new SLExpress(scanner.nextInt()); sum += express[i].getTotal(); System.out.println(sum); } else if(name == "DD") { express[i] = new DDExpress(scanner.nextInt()); sum += express[i].getTotal(); } } System.out.print(sum); } } abstract class Express { private int weight; Express(int weight) { this.weight = weight; } public int getWeight() { return this.weight; } public abstract int getTotal(); } class SLExpress extends Express { SLExpress(int weight) { super(weight); } public int getTotal() { int total = 0; if(super.getWeight() <= 1) total = 12; else total = 12 + (super.getWeight() - 1)*2; return total; } } class DDExpress extends Express { DDExpress(int weight) { super(weight); } public int getTotal() { int total = 0; if(super.getWeight() <= 1) total = 5; else total = 5 + (super.getWeight() - 1)*1; return total; } }
时间: 2024-04-27 12:19:51 浏览: 129
这段代码实现了一个简单的快递计价程序,其中用到了抽象类和多态的概念。程序中定义了一个Express抽象类,其中包含一个weight属性表示快递重量和一个getTotal()抽象方法用于计算运费。SLExpress和DDExpress类都继承自Express类,分别实现了不同的计价标准。
在main方法中,首先读入快递数量n,然后用一个Express类型的数组来保存每个快递。在循环中,先读入快递公司名称name和重量weight,根据不同的快递公司名称创建不同的快递对象并将其保存到数组中。然后调用getTotal()方法计算运费并累加到sum变量中。最后输出sum即为所有快递的总运费。
需要注意的是,在比较字符串时应该使用equals()方法而不是==运算符。因为==运算符比较的是对象的引用是否相等,而equals()方法比较的是对象的值是否相等。因此,应该将name == "SL"和name == "DD"改为name.equals("SL")和name.equals("DD")。
相关问题
import java.util.Scanner; public class Main { public static void main(String[] args) {
`import java.util.Scanner;` 这行代码是在Java程序中导入`java.util.Scanner`包的关键字。`Scanner`是Java提供的一种用于处理用户输入的类,它允许开发者从控制台读取数据,如整数、浮点数、字符串等。在`main`函数开始之前,通常会引入这个包以便在程序中创建`Scanner`对象来获取用户的输入。
接下来的`public class Main { ... }`这部分定义了一个名为`Main`的公共类,这是Java应用程序的标准入口点。所有的Java程序都会有一个`main`方法,它是程序运行的起点。在这个类里,你可以编写初始化代码,执行业务逻辑,以及调用其他方法。
在`main`函数的具体内容中,通常会看到类似这样的结构:
```java
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // 创建Scanner对象
System.out.println("请输入一些信息:"); // 提示用户
int input = scanner.nextInt(); // 读取用户输入的整数
// 更多的逻辑操作...
scanner.close(); // 关闭扫描器以释放资源
}
```
这里,我们创建了一个`Scanner`实例,并通过`nextInt()`方法获取用户输入的整数值。
package module4; import java.util.ArrayList; import java.util.Scanner; public class Test40 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); ArrayList<Shape> list = new ArrayList<>(); … }
很抱歉,我不太明白您想要问什么问题。这段代码看起来像是Java语言中创建一个Test40类的程序,其中包含一个main方法,该方法利用Scanner类和ArrayList类实现对形状类Shape的动态数组进行输入和操作。您需要补充代码以实现完整的功能。如果您有任何具体的问题或需要帮助,请告诉我,我会尽力回答。
阅读全文