我有一个格式如下的.txt文件
The Shawshank Redemption
100
19.95
DVD
还有更多行,但我正在尝试将这些值存储到四个不同的ArrayLists中。问题是获取错误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(),它会读取它。任何人都可以给我的任何提示都会非常有帮助。
答案 0 :(得分:2)
您已经阅读了while语句中的第一行: -
while(list.hasNext() && !list.nextLine().equals(""))
然后当你第一次再次调用nextLine
时,你实际上正在使用list.nextLine
读取整数(100),这就是你得到该异常的原因。因为您现在可能正在String
中存储Integer List
。只需从while
删除第二个测试。
第二个问题是,您只检查了list.hasNext()
一次,然后您正在阅读4 inputs
。如果你没有输入,这可能会再次引发异常。所以,你还需要照顾它。
另一个问题是,您将使用list.nextInt()
和list.nextDouble()
。请记住,这些方法读取输入直到最后的newline
字符。因此,读取后留下的换行符将通过以下method
读取输入的调用来读取,如果没有消耗的话。因此,您还需要在这两种方法之后添加空的list.next()
调用,以使用newline
,以便在{newline
之后list.nextDouble()
不会读取list.nextInt()
1}},否则你会继续获得异常。
除了这些问题之外,我建议你创建一个存储这些属性的Class
,并且拥有该类的List
个对象,而不是有4个不同的列表。