用于扫描的简单 try & catch 代码不适用于十进制值

Simple try & catch code for scanning not working with decimal values

import java.util.Scanner;

public class Main{

public static void main(String[] args){

    Scanner a = new Scanner(System.in);

    System.out.println("Enter a number: ");

    try{

        float b = a.nextFloat();

        System.out.println("You wrote " + b);

    }catch(Exception n){

        System.out.println("That wasn't a number, yo!");

    }

    a.close();

}

}

我想扫描用户输入的数字,判断是不是数字。当我输入 3.1415 等小数时出现问题,因为它会将其检测为非数值。

这是因为 Scanner 根据您的区域设置解析浮点数。当您使用 , 而不是 . 时,它会起作用。例如,在德国和奥地利,通常使用 , 作为逗号,而不是 .,因此根据您所在的位置,情况也可能如此。

您可以使用以下方法将 Scanner 的语言环境设置为 US

a.useLocale(Locale.US);

然后您将不得不再次使用 .