如何在Java中检查字符串是否可以解析为double类型?
使用 parseDouble() 方法
**parseDouble()** 方法是 **java.lang.Double** 类的方法,它接受一个字符串值,对其进行解析,并返回该字符串的双精度数值。
如果传递空值给此方法,它会抛出 NullPointerException 异常;如果此方法无法将给定的字符串解析为双精度数值,它会抛出 NumberFormatException 异常。
因此,要了解某个特定字符串是否可以解析为 double 类型,可以将其传递给 parseDouble 方法,并将此行代码用 try-catch 块包裹。如果发生异常,则表示给定的字符串无法解析为 double 类型。
示例
import java.util.Scanner; public class ParsableToDouble { public static void main(String args[]) { try { Scanner sc = new Scanner(System.in); System.out.println("Enter a string value: "); String str = sc.next(); Double doub = Double.parseDouble(str); System.out.println("Value of the variable: "+doub); }catch (NumberFormatException ex) { System.out.println("Given String is not parsable to double"); } } }
输出
Enter a string value: 2245g Given String is not parsable to double
使用 valueOf() 方法
类似地,Double 类的 **valueOf()** 方法(也)接受一个字符串值作为参数,修剪多余的空格并返回字符串表示的双精度数值。如果给定的值无法解析为 double 类型,此方法会抛出 NumberFormatException 异常。
示例
import java.util.Scanner; public class ParsableToDouble { public static void main(String args[]) { try { Scanner sc = new Scanner(System.in); System.out.println("Enter a string value: "); String str = sc.next(); Double doub = Double.valueOf(str); System.out.println("Value of the variable: "+doub); }catch (NumberFormatException ex) { System.out.println("Given String is not parsable to double"); } } }
输出
Enter a string value: 2245g Given String is not parsable to double
使用 Double 类的构造函数
Double 类的一个构造函数接受一个字符串作为参数,并构造一个(Double)对象,该对象封装了给定的值。如果传递给此构造函数的字符串无法解析为 Double 类型,则会抛出 NumberFormatException 异常。
示例
import java.util.Scanner; public class ParsableToDouble { public static void main(String args[]) { try { Scanner sc = new Scanner(System.in); System.out.println("Enter a string value: "); String str = sc.next(); Double doub = new Double(str); System.out.println("Value of the variable: "+doub); }catch (NumberFormatException ex) { System.out.println("Given String is not parsable to double"); } } }
输出
Enter a string value: 2245g Given String is not parsable to double
广告