Java 为什么Scanner方法中的nextDouble()会发送“我”;例外情况;

Java 为什么Scanner方法中的nextDouble()会发送“我”;例外情况;,java,java.util.scanner,Java,Java.util.scanner,我假设输入两个数字,一个int表示提取金额,一个double表示余额(中间有空格)。因为每次取款都要收取0.5英镑的费用,所以余额必须是双倍。这就是必须打印的内容。 我在nextDouble时出错了,为什么?我只有一个月的编码时间,我认为这将是小菜一碟,我认为基本语法在30年前毁了我:( 这取决于区域设置,请尝试使用逗号而不是点,反之亦然 例如:1,5而不是1.5您可以检查是否有一些int或double需要读取。 你必须使用,或者。取决于国家,你是。 如果您需要独立于国家/地区的数据,请将其作为

我假设输入两个数字,一个int表示提取金额,一个double表示余额(中间有空格)。因为每次取款都要收取0.5英镑的费用,所以余额必须是双倍。这就是必须打印的内容。 我在nextDouble时出错了,为什么?我只有一个月的编码时间,我认为这将是小菜一碟,我认为基本语法在30年前毁了我:(


这取决于区域设置,请尝试使用逗号而不是点,反之亦然


例如:1,5而不是1.5

您可以检查是否有一些int或double需要读取。 你必须使用,或者。取决于国家,你是。 如果您需要独立于国家/地区的数据,请将其作为字符串读取并进行解析(见下文)

解决方案是将该行作为字符串读取,然后将其解析为int和double

检查double是否可用:

input.hasNextDouble();
读取为字符串:

String line = input.nextLine();
String[] sl = line.split(" ");
amount = Integer.parseInt(sl[0]);
balance = Double.parseDouble(sl[1]); //solve the problem with . and ,

您还可以检查是否有足够的输入。

您提供的输入是什么?以及您得到的确切异常情况是什么。输入带有“.”(点)小数,但我的IDE设置为“,”(逗号).我已经长大了,记得在我的国家,当我们在数学中改为逗号时,我仍然使用dots。更改了IDE配置以解决问题。是的,我尝试使用locale,但后来我不得不转换为string,我不想转换为string,所以我将Eclipse默认设置改为english US,以使用“.”表示小数,没有问题。
String line = input.nextLine();
String[] sl = line.split(" ");
amount = Integer.parseInt(sl[0]);
balance = Double.parseDouble(sl[1]); //solve the problem with . and ,