我正在尝试从由单个项目和回车之间的空格分隔的文件中读取值。
所以文本文件类似于
1 lunch box 3.99
2 jelly donuts 1.99
4 cases of beer 36.99
2 chess boards 24.99
使用这些值,我正在尝试构造对象......因此,对象将由数量、行中的第一件事、名称 - 行上的第二件事和行上最后一件事的价格组成。所以构造函数是这样的:
product(int x, String name, float price) {
this.x = x;
this.name = name;
this.price = price;
}
我的问题是我对扫描仪进行编码的方式在尝试解析所有内容时遇到了麻烦。所以我收到一个 java.util.InputMismatchException。如果我使用如下算法:
if (scannerRef.hasNextInt())
arraylistRef.intThing = scannerRef.nextInt();
if (scannerRef.hasNext())
arraylistRef.name = scannerRef.next();
if (scannerRef.hasNextFloat())
arrayListRef.price = scannerRef.nextFloat();
然后代码按照我的方式将每个单独的原语或字符串放在它自己的对象中,而不是遍历整行然后将其添加到对象中
我希望这是有道理的。如果您现在正在阅读本文,感谢您阅读。
我关心的代码的主要部分是这样的:我在这里使用上述类型的算法注释掉的方式将所有内容放入同一个对象但运行到 java.util.InputMismatchException 野狗大脑
// loop while there is text to read
while (s1.hasNextLine()) {
Product p = new Product(p.quantity = s1.next);
//if (s1.hasNextInt())
p.quantity = s1.nextInt();
// else
p.name = s1.next(); // to get strings
// else if(s1.hasNextFloat())
p.price = s1.nextFloat();
// now add the line to the product arraylist
foo.add(p);
}