gpt4 book ai didi

Java .hasNextInt() 不匹配异常

转载 作者:行者123 更新时间:2023-12-02 07:18:59 25 4
gpt4 key购买 nike

我有一个格式如下的 .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());
}

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

最佳答案

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

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

然后,当您第一次再次调用 nextLine 时,您实际上是使用 list.nextLine 读取整数 (100),这就是您收到该异常的原因。因为您现在可能将字符串存储在整数列表中。只需从 while 中删除第二个测试即可。

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

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

<小时/>

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

关于Java .hasNextInt() 不匹配异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14510119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com