我们收到以下错误:
java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
对于此代码:
Scanner readyBoi;
ArrayList<Item> shopStock = new ArrayList<Item>();
public Shop(String stock){
this.readyBoi = new Scanner(stock);
while(readyBoi.hasNextLine()){
String temp = readyBoi.nextLine();
Tycoon.out(temp);
String tempArray[] = temp.split("\t", 5);
Item i = new Item(
Integer.parseInt(tempArray[0]),
Integer.parseInt(tempArray[1]),
Integer.parseInt(tempArray[2]),
tempArray[3],
tempArray[4]
);
this.shopStock.add(i);
}
}
这是引用的项目声明:
Item(int id, int price, int generation, String name, String desc)
代码编译正确,但会产生运行时错误。
答案 0 :(得分:1)
问题在于您的输入。这是Stock String。似乎,您成功地将该String拆分为tempArray []。您的代码期望此数组的前三个元素为整数值。但不幸的是没有。所以请检查您的输入股票。可能是id,price或generation无法解析为Int。
答案 1 :(得分:0)
我发现这个其他stackoverflow答案很有帮助; @CraigTP How to check if a String is numeric in Java。
但是您可以捕获异常并处理它,如下所示:
Scanner readyBoi;
ArrayList<Item> shopStock = new ArrayList<Item>();
public Shop(String stock){
this.readyBoi = new Scanner(stock);
while(readyBoi.hasNextLine()){
String temp = readyBoi.nextLine();
Tycoon.out(temp);
String tempArray[] = temp.split("\t", 5);
try{
Item i = new Item(
Integer.parseInt(tempArray[0]),
Integer.parseInt(tempArray[1]),
Integer.parseInt(tempArray[2]),
tempArray[3],
tempArray[4]);
this.shopStock.add(i);
}catch(NumberFormatException nfe){
System.out.println("One of the params is not an integer");
}
}
}