java - 我试图为我的课程做一个税收计算器,但我被困住了,有人可以帮忙,因为我不知道(Java)
问题描述
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class RoomTaxSystem {
public static void main(String args[]) {
List<String> fileLines = new ArrayList<>();
try(BufferedReader bufferedReader = new BufferedReader(new FileReader("rooms.txt"))){
String currentLine;
while((currentLine = bufferedReader.readLine()) != null) {
fileLines.add(currentLine);
}
bufferedReader.close();
Scanner inputScanner = new Scanner(System.in);
String input = "";
do {
double taxRate = 20.0;
System.out.print("Specify Custom Tax Rate [Y|N]: ");
input = inputScanner.next();
double TaxRate = inputScanner.nextDouble();
if(input.equals("Y") || input.equals("y")) {
boolean invalidInput;
do {
invalidInput = true;
try {
System.out.print("Specify Tax Rate (%): ");
taxRate = Double.valueOf(inputScanner.next());
invalidInput = false;
} catch (NumberFormatException e) {
System.out.println("Invalid input. Input must be a valid double value.");
}
} while(invalidInput);
} else {
System.out.println("Assuming Tax Rate = " + taxRate + "%");
}
double totalIncome = 0.0;
double totalTaxes = 0.0;
for(int roomIndex = 0; roomIndex < fileLines.size() / 3; roomIndex++) {
String roomType = fileLines.get(roomIndex * 3);
int bookings = Integer.valueOf(fileLines.get((roomIndex * 3) + 1));
double roomPrice = Double.valueOf(fileLines.get((roomIndex * 3) + 2));
double income = bookings * roomPrice;
double taxes = income * (taxRate / 100);
totalIncome += income;
totalTaxes += taxes;
System.out.printf("Room Type : %s, Bookings : %d, Room Price : £%.2f, Income : £%.2f, Tax : £%.2f\n", roomType, bookings, roomPrice, income, taxes);
}
System.out.printf("Total Income : £%.2f\n", totalIncome);
System.out.printf("Total Taxes : £%.2f\n", totalTaxes);
System.out.print("Rerun the program? [Y|N]: ");
input = inputScanner.next();
} while(input.equals("Y") || input.equals("y"));
} catch (IOException e) {
System.out.println("Error when reading the \"rooms.txt\" file.");
}
}
}
单人 5 23.50
双3 27.50
Suite 2 50.00 ^上面的数字是 AI 需要用于税收计算器的附录,但无法确定我哪里出错了所有帮助将不胜感激如果不是很好,我似乎无法弄清楚这是它在应用程序启动时应该做的,系统应询问管理人员是否希望指定自定义税率,这应采用是/否问题的形式。当经理说是时,系统应要求输入税率(从键盘),然后将覆盖默认税率(即附录 B)。当经理说不时,系统应该(在屏幕上)报告默认税率(即附录 C)。接下来,系统应该循环遍历房间的数据,计算并打印(到屏幕上)房间类型、预订数量、房间价格、税前收入和税前收入,后两者需要一些基本的计算。最后,应在系统正常退出之前计算并打印税前收入和税前收入的运行总计。这就是我单击运行时发生的情况
Specify Custom Tax Rate [Y|N]: y
Y
Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:939)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextDouble(Scanner.java:2564)
at RoomTaxSystem.main(RoomTaxSystem.java:26)
解决方案
问题在这里:
double TaxRate = inputScanner.nextDouble();
您正在对字符串使用 get next double 方法
推荐阅读
- javascript - 倒计时答题器 - JS
- python-3.x - Cassandra 3.11.3 and cqlsh not support python 3.6 and 3.7?
- websocket - ServerEnpoint change port
- vue.js - Vuejs v-on click 在组件内不起作用
- c# - 从字符串列表中删除空条目
- python - Python - Tkinter - 从角落调整窗口大小时滚动条自动移动
- git - 使用来自单个提交的文件创建新分支 [尚未合并到 master]
- c++ - 我可以将智能指针指向智能指针吗?
- c# - 字符串格式错误c#
- postgresql - 在 PostgreSQL 中创建间隔的不同方法