当前位置: 首页 > 知识库问答 >
问题:

输入双类型数字与"."返回错误。它与“,”一起工作

王棋
2023-03-14

例如,当我输入firstnum=1,5; ii dnum=3,2时,它返回和。但是当我用“.”而不是“”输入数字时,它会返回错误。

Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Unknown Source)
    at java.util.Scanner.next(Unknown Source)
    at java.util.Scanner.nextDouble(Unknown Source)
    at Variables.main(Variables.java:11)

有人能给我解释一下吗?在教程中,我看到guy做了同样的程序,即使他使用了带“.”的双数,它也返回了和。

import java.util.Scanner;
public class Variables 
{
    public static void main(String args[])
    {
        Scanner scanny = new Scanner(System.in);
        double first_number, second_number, answer;
        System.out.println("Enter first num: ");
        first_number = scanny.nextDouble();
        System.out.println("Enter second num: ");
        second_number = scanny.nextDouble();
        answer = first_number + second_number;
        System.out.println(answer);

    }

}

共有3个答案

阎懿轩
2023-03-14

使用逗号或点作为小数分隔符取决于JVM的当前区域设置,这取决于主机配置。

您可以使用Scanner#useLocale更改它:

scanny.useLocale(Locale.US);
计阳泽
2023-03-14

这可能是因为您的计算机设置为在浮点计算中使用逗号作为小数分隔符的区域设置。制作教程的人可以将语言环境设置为美国,在这种情况下,它是一个“.”

在英国和其他欧洲国家(我很确定),分隔符是,

郎宏浚
2023-03-14

这是Locale/i18n,您的机器和他的机器具有不同的Locale。JVM使用您的系统区域设置作为默认设置。要更改,您可以执行以下操作:

Locale.setDefault(new Locale("pt", "BR"));

在这种情况下,您的小数分隔符将是","

如果将区域设置设置为:

Locale.setDefault(Locale.ENGLISH);

然后你需要使用“.”

您可以在上阅读有关国际化/i18n的更多信息http://docs.oracle.com/javase/tutorial/i18n/

 类似资料:
  • 在典型的 Rust 函数中,返回的值若是有个错误的类型,将导致出现如下所示的错误: error[E0308]: mismatched types --> src/main.rs:2:12 | 1 | fn foo() { | - expected `()` because of default return type 2 | return "foo" |

  • 问题内容: 我在生成HTML的表单中有一个标记。当我通过表单提交(例如,提交按钮等)提交表单时,在操作方法中一切正常。但是,当我将代码更改为: 在后端,该字段始终为。 在操作类中,文件字段的定义如下(使用setter和getter): 是因为现在表单已序列化,所以无法在后端正确设置文件字段了吗? 问题答案: 这是因为jQuery.serialize()仅序列化输入元素,而不序列化其中的数据。 仅“

  • 问题内容: 我的包中有一个结构,上面有耗时的方法,通过工厂函数进行构造也很耗时。因此,在依赖于该其他结构的包中,我希望能够在创建后使用伪造的工厂函数和伪造的结构对其进行测试。由于结构是通过工厂函数构造的,因此我想伪造工厂函数,并在测试期间将替代工厂函数传递给我的结构。 昂贵的包装的一个例子是: 我的主包装使用以下代码: 但是,此代码抱怨以下错误: 。\ main.go:6:不能在字段值中使用昂贵的

  • 我在我的Java程序中写了这个函数: 这就是我所说的: 它是有效的,但我觉得我应该能够省略第一个参数,并从返回类型(结果被分配到的类型)推断出它。这可能吗?如果是,语法是什么?

  • 我试着写一个小函数,它接受两个列表,并根据另一个列表的元素对一个进行排序。所以类似于: 将产生一个排序列表。 然而,可能是一个不同的列表,比如整数、浮点数或其他列表。理想情况下,我希望我的程序能够获取我抛出的任何列表,根据