用于扫描的简单 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);
然后您将不得不再次使用 .
。
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);
然后您将不得不再次使用 .
。