添加更多的输入验证和错误处理。比如输入的机票原价是负数,月份不在1到12的范围内,若出现这样的错误,则进行反复输入,直到输入正确的机票原价和月份为止
时间: 2024-04-09 09:28:04 浏览: 63
在代码中添加输入验证和错误处理可以确保输入的数据符合要求。以下是经过修改后的示例代码:
```java
import java.util.Scanner;
public class TicketPriceCalculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double originalPrice = getValidOriginalPrice(scanner);
int month = getValidMonth(scanner);
System.out.print("请输入舱位(头等舱、商务舱、经济舱):");
String cabinClass = scanner.next();
double discount = 1.0; // 默认不打折
if (month >= 5 && month <= 10) { // 旺季
if (cabinClass.equals("头等舱")) {
discount = 0.9;
} else if (cabinClass.equals("商务舱")) {
discount = 0.85;
} else if (cabinClass.equals("经济舱")) {
discount = 0.8;
}
} else { // 淡季
if (cabinClass.equals("头等舱")) {
discount = 0.7;
} else if (cabinClass.equals("商务舱")) {
discount = 0.65;
} else if (cabinClass.equals("经济舱")) {
discount = 0.6;
}
}
double finalPrice = originalPrice * discount;
System.out.println("最终价格:" + finalPrice);
}
private static double getValidOriginalPrice(Scanner scanner) {
double originalPrice;
do {
System.out.print("请输入机票原价:");
originalPrice = scanner.nextDouble();
} while (originalPrice < 0);
return originalPrice;
}
private static int getValidMonth(Scanner scanner) {
int month;
do {
System.out.print("请输入月份(1-12):");
month = scanner.nextInt();
} while (month < 1 || month > 12);
return month;
}
}
```
在上述代码中,我们创建了两个辅助方法 `getValidOriginalPrice` 和 `getValidMonth`,用于获取合法的机票原价和月份。这两个方法会反复要求用户输入,直到输入合法的数据为止。
`getValidOriginalPrice` 方法会要求用户输入机票原价,并检查是否为负数。如果输入的值为负数,则会继续要求用户重新输入。
`getValidMonth` 方法会要求用户输入月份,并检查是否在有效范围内(1到12)。如果输入的值不在范围内,则会继续要求用户重新输入。
通过这些输入验证和错误处理的逻辑,可以确保输入的数据是符合要求的,避免了非法数据的影响。
阅读全文