Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 문자열이 double 타입으로 파싱 가능한지 확인하는 방법

parseDouble() 메서드 사용하기

java.lang.Double 클래스의 parseDouble() 메서드는 String 값을 매개변수로 받아 이를 해석한 뒤, 해당 문자열이 나타내는 double 값을 반환합니다.

이 메서드에 null 값을 전달하면 NullPointerException이 발생하며, 주어진 문자열을 double 값으로 파싱할 수 없는 경우에는 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

위 실행 결과에서 볼 수 있듯이, 숫자와 문자가 섞인 "2245g"는 double로 변환할 수 없기 때문에 NumberFormatException이 발생하고 catch 블록의 메시지가 출력됩니다.

valueOf() 메서드 사용하기

마찬가지로 Double 클래스의 valueOf() 메서드도 String 값을 매개변수로 받아 앞뒤의 불필요한 공백을 제거한 후, 해당 문자열이 나타내는 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 = 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 클래스의 생성자 중 하나는 String을 매개변수로 받아 해당 값을 감싸는 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

정리 및 참고 사항

세 가지 방법 모두 try-catch 블록과 함께 사용하여 문자열의 double 변환 가능 여부를 확인할 수 있습니다. 다만 Java 9부터 new Double(String) 생성자는 사용이 권장되지 않음(deprecated) 상태이므로, 새로운 코드에서는 parseDouble() 또는 valueOf() 메서드를 사용하는 것이 좋습니다. 특히 기본형(primitive) double 값이 필요하면 parseDouble()을, Double 객체가 필요하면 valueOf()를 선택하면 됩니다.