0

我有一个格式如下的 .txt 文件

The Shawshank Redemption 
100 
19.95 
DVD 

还有更多行,但我试图将这些值存储到四个不同的 ArrayList 中。问题是得到错误 java.util.InputMismatchException。这是我的代码:

while(list.hasNext() && !list.nextLine().equals("")){
                titleList.add(list.nextLine());
                quantityList.add(list.nextInt());       
                priceList.add(list.nextDouble());
                typeList.add(list.nextLine());          
            }

程序在quantityList.add(list.nextInt())处崩溃;告诉我下一行不是和 int,给了我那个错误。如果我使用 nextLine(),它会读取它。任何人都可以给我的任何提示都会非常有帮助。

4

1 回答 1

2

您已经阅读了 while 语句中的第一行:-

while(list.hasNext() && !list.nextLine().equals(""))

然后,当您再次nextLine第一次调用时,您实际上是在读取整数 (100),使用list.nextLine这就是您得到该异常的原因。因为您现在可能正在将 a 存储StringInteger List. 只需从while.

第二个问题是,您只检查list.hasNext()过一次,然后您正在阅读4 inputs。如果您没有输入,那可能会再次引发异常。因此,您还需要注意这一点。

您将遇到的另一个问题是由于使用了list.nextInt()and list.nextDouble()。请记住,这些方法读取输入直到最后的newline字符。因此,读取后留下的换行符将被读取method输入的以下调用读取,如果没有消耗。因此,您还需要list.next()在这两个方法之后添加一个空调用,以使用newline, 以便used afternewline不会读取,否则您将继续收到异常。list.nextDouble()list.nextInt()


除了这些问题,我建议您创建一个Class存储这些属性的对象,并拥有List该类的对象,而不是拥有 4 个不同的列表。

于 2013-01-24T20:29:57.940 回答