当前位置: 首页 > 面试题库 >

当我使用扫描仪sc.nextDouble()时,为什么会得到InputInputMismatchException

庾君博
2023-03-14
问题内容

我想从txt文件中读取数据,但是InputMismatchException在调用nextDouble()method
时得到了。即使我正在使用该useLocale方法,但它不起作用。

txt文件的第一行是: 1;forname;1.9

public class SimpleFileReader {
    public static void main(String[] args){
        readFromFile();
    }
    public static void readFromFile(){
        try {
            int x = 0;
            File file = new File("read.txt");
            Scanner sc = new Scanner(file).useDelimiter(";|\\n");
            sc.useLocale(Locale.FRENCH);
            while (sc.hasNext()){
                System.out.println(sc.nextInt()+" "+sc.next()+" "+sc.nextDouble());
                x++;
            }
            System.out.println("lines: "+x);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

问题答案:

怪罪法国语言环境:它使用逗号作为小数点分隔符,因此1.9无法解析。

替换1.91,9可修复问题(演示1)。如果您想解析1.9,请使用Locale.US代替Locale.FRENCH(demo
2
)。

您的代码中的第二个问题是使用\\n用作分隔符。您应该使用单个反斜杠,否则包含的单词n将破坏您的解析逻辑。



 类似资料:
  • 我还尝试了,,JMeter获得了多达8000个示例,最大时间12000ms(超时30s),并给出了错误。在拒绝之前,它至少应该排队10,000个连接。

  • 嗨,我正在编写一个程序,它使用Scanner从用户那里获取输入,然后使用布尔方法检查输入的长度是否不超过六个字符。问题是,如果长度小于六个,我使用了while循环来不断请求输入;但是在第一次错误输入后,如果你插入一串六个字母或更长的字符串,循环仍然会继续。这是程序: 谢谢

  • 问题内容: 我不明白为什么第15行不做任何输入,将不胜感激:3 输出量 请输入您的问题的第一个数字!2552所以您选择了2552选择您的第二个数字41您选择了第二个数字41现在输入ur运算符 由于某种原因,输出在最后一行结束并停止,并且不接收任何信息! 问题答案: 您需要在调用行的后面立即调用,原因是仅要求下一个整数不会占用输入中的整个行,因此您需要通过调用来跳至输入中的下一个新行字符。 每次您需

  • 我有一个简单的Do-While循环,它使用的扫描器功能不正常。代码应该显示一个文本,提示用户输入字符串,用户输入字符串,然后程序再次显示相同的文本,并提示用户输入另一个字符串。 程序所做的是显示正确的消息,用户输入一个字符串,然后提示用户输入一个字符串,但用户输入之前没有文本。用户输入文本后,它就会正常工作。 查看我的代码,我看不出程序有任何理由在不向用户显示文本的情况下提示用户两次输入。

  • 我写了一个小程序,它检查字符串是否按照用户输入的字母顺序排序,并用空白隔开一行。它的工作,这是伟大的,但我不明白的是,为什么我可以使用扫描器创建数组时,大小还没有设置。任何见解都将不胜感激。

  • 我只是想知道为什么是java。util。扫描器实现java。util。迭代器? 实现删除方法,并抛出一个不支持的操作异常。 但是一个类在实现接口时,不应该履行接口的契约吗? 实现