问题描述
我收到 InputMismatchException
java ShoppingTime 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.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at ShoppingTime.main(ShoppingTime.java:88)
据我所知,是因为我没有在主函数中提供足够的输入?但我不知道我需要添加什么。它会是另一个价格输入吗?我不这么认为 bc 我只接受字符串输入和整数输入。
public class ShoppingTime{
public static void main(String args[]) throws FileNotFoundException {
File read = new File("Products.txt");
Scanner sc = new Scanner(read);
ArrayList<Product> ar = new ArrayList<Product>();
while (sc.hasNextLine()) {
String product = sc.nextLine();
int price = sc.nextInt();
ar.add(new Product(product,price));
}
int ch;
Cart c = new Cart();
sc = new Scanner(system.in);
do {
System.out.println("Menu");
System.out.println("1 Add item");
System.out.println("2 View Cart");
System.out.println("3 Clear Cart");
System.out.println("4 Checkout");
System.out.println("5 Exit");
ch = sc.nextInt();
if (ch == 1) {
c.addItem(ar);
}
if (ch == 2) {
c.viewCart();
}
if (ch == 3) {
c.clearCart();
}
if (ch == 4) {
c.checkOut();
}
} while (ch != 5);
}
}
解决方法
所有的行都是一个字符串,所以你已经阅读了整行,包括在第一个 nextLine() 调用中包装的 int。你应该只用 nextLine() 读取并从中解析出 int。