【问题标题】:Why is nextDouble() from the Scanner method sending me "Exception"为什么 Scanner 方法中的 nextDouble() 向我发送“异常”
【发布时间】:2016-08-23 02:06:45
【问题描述】:

我想输入 2 个数字,一个 int 是提取的金额,一个 double 是余额(它们之间有一个空格)。由于每次提款都收取 0.5 的费用,因此余额必须是双倍的。这就是必须打印的内容。 我在 nextDouble 收到错误,为什么?我只有 1 个月的编码,我认为这将是小菜一碟,我认为 BASIC 语法在 30 年前毁了我:(

import java.util.Scanner;

public class Test {

public static void main(String[] args) {
    //init variables
    int amount;
    double balance;
    //insert amount and balance
    Scanner input = new Scanner (System.in);
    amount = input.nextInt();
    balance = input.nextDouble();
    //reduce amount+fee from balance
    balance=balance-(amount + 0.50);
    //print new balance
    System.out.print(balance);
    input.close();
}
}

【问题讨论】:

  • 您输入的内容是什么?还有你得到的确切例外是什么。
  • 输入是“.”(点)小数,但我的 IDE 设置为“,”(逗号)。我已经长大了,可以记得我们在我的国家/地区的数学中何时改用逗号,但我仍然使用点。更改 IDE 配置以解决。

标签: java java.util.scanner


【解决方案1】:

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

例如:1,5 而不是 1.5

【讨论】:

  • 是的,我尝试使用语言环境,但后来我不得不转换为字符串,这是我不想要的,所以我将 Eclipse 默认设置更改为美国英语以使用“。”对于没有问题的小数。 How to do that
【解决方案2】:

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

独奏是将行作为字符串读取,然后将其解析为 int 和 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 ,

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

【讨论】:

    猜你喜欢
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-12
    • 2016-11-05
    • 2011-08-29
    • 2022-11-06
    相关资源
    最近更新 更多