每当我尝试运行输出时,欢迎消息之后的所有内容都会出现多个异常,从而阻止任何输出通过它。帮忙吗?
以下是显示的例外情况:
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 TheCupcakeFactory.main(TheCupcakeFactory.java:35)
这是我的主要方法和名为 TheCupcakeFactory 的类
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
public class TheCupcakeFactory
{
private static Scanner inputFile;
/*
*Diego Molina Salinas
*CS160 Fall 2023
*Project 4: The Cupcake Factory Sales
*
*/
public static void main(String[] args) throws IOException
{
Cupcake cupcakeCS = new Cupcake();
Cupcake cupcakeAP = new Cupcake();
Cupcake cupcakeBF = new Cupcake();
Cupcake cupcakeBS = new Cupcake();
Cupcake cupcakeBW = new Cupcake();
Cupcake [] cupcakes = {cupcakeCS, cupcakeAP, cupcakeBF, cupcakeBS, cupcakeBW};
System.out.println("Welcome to the Cupcake Factory Sales Registry!!");
//
FileReader file = new FileReader("FreshCupcakes.txt");
inputFile = new Scanner(file);
//This is setting the Chocolate Strawberry Cupcake
cupcakeCS.setFlavor(inputFile.next());
cupcakeCS.setDescription("Moist chocolate cake filled with strawberry jam, topped with strawberry buttercream dipped in chocolate.");
cupcakeCS.setUnitsOnHand(inputFile.nextInt());
cupcakeCS.setPrice(2.75);
//This is setting the Apple Pie Cupcake
cupcakeAP.setFlavor(inputFile.next());
cupcakeAP.setDescription("Moist vanilla cake filled with apple pie filling; topped with cream cheese icing, apple pie filling, and cinnamon streusel");
cupcakeAP.setUnitsOnHand(inputFile.nextInt());
cupcakeAP.setPrice(3.25);
//This is setting the Butterfinger Cupcake
cupcakeBF.setFlavor(inputFile.next());
cupcakeBF.setDescription("Moist chocolate cake filled and topped with our peanut butter icing and Butterfinger candy.");
cupcakeBF.setUnitsOnHand(inputFile.nextInt());
cupcakeBF.setPrice(2.95);
//This is setting the Banana Split Cupcake
cupcakeBS.setFlavor(inputFile.next());
cupcakeBS.setDescription("Moist chocolate cake filled with banana filling, topped with our vanilla buttercream with sprinkles, cherry and chocolate drizzle on top.");
cupcakeBS.setUnitsOnHand(inputFile.nextInt());
cupcakeBS.setPrice(3.15);
//This is setting the Black & White Cupcake
cupcakeBW.setFlavor(inputFile.next());
cupcakeBW.setDescription(" Moist vanilla cupcake, topped with our rich fudge icing");
cupcakeBW.setUnitsOnHand(inputFile.nextInt());
cupcakeBW.setPrice(3.50);
for (Cupcake cupcake : cupcakes) {
System.out.println(cupcake);
}
}
这是我的 Cupcake 类,它包含所有构造函数:
public class Cupcake
{
String flavor;
String description;
int unitsOnHand;
double price;
public Cupcake() {
// TODO Auto-generated constructor stub
this.flavor = "";
this.description = "";
this.unitsOnHand = 0;
this.price = 0.0;
}
public String getFlavor() {
return flavor;
}
public void setFlavor(String flavor) {
this.flavor = flavor;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public int getUnitsOnHand() {
return unitsOnHand;
}
public void setUnitsOnHand(int unitsOnHand) {
this.unitsOnHand = unitsOnHand;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public void newUnitsOnHand(int quantity) {
unitsOnHand = unitsOnHand - quantity;
}
@Override
public String toString() {
return flavor + ": \t\t $" + price + " - " + description;
}
}
最后,这是我设置纸杯蛋糕信息的文件。 (数字表示可用纸杯蛋糕的数量):
Chocolate Strawberry 25
Apple Pie 15
Butterfinger 25
Banana Split 30
Black & White 50
这里有一个问题。默认分隔符是空格。您的第二个输入
Chocolate Strawberry 25
是
Strawberry
,但它试图被解析为int
。您需要具有一致的输入格式,以便您可以正确解析数字。
cupcakeCS.setFlavor(inputFile.next());
cupcakeCS.setDescription("Moist chocolate cake filled with strawberry jam, topped with strawberry buttercream dipped in chocolate.");
cupcakeCS.setUnitsOnHand(inputFile.nextInt());
cupcakeCS.setPrice(2.75);