소개
이 랩에서는 Java 에서 숫자가 double 인지 확인하는 방법을 배우게 됩니다. instanceof 연산자를 사용하여 객체가 Double 래퍼 클래스의 인스턴스인지 확인하는 것부터 시작하여 다양한 기술을 살펴볼 것입니다.
그 다음, 문자열을 double 로 파싱하고 잠재적인 오류를 처리하는 방법을 배우게 됩니다. 마지막으로, 올바른 숫자 표현을 사용하고 있는지 확인하기 위해 Double과 Integer 유형을 구별하는 방법을 다룰 것입니다.
Double 클래스 인스턴스 확인
이 단계에서는 Java 의 Double 클래스를 살펴보고 객체가 이 클래스의 인스턴스인지 확인하는 방법을 배우겠습니다. Java 에서 double과 같은 기본 데이터 타입에는 Double과 같은 해당 래퍼 클래스가 있습니다. Double 클래스는 double-precision 부동 소수점 숫자 작업에 유용한 메서드를 제공합니다.
먼저, ~/project 디렉토리에 DoubleCheck.java라는 새 Java 파일을 생성해 보겠습니다. 왼쪽의 WebIDE 의 파일 탐색기를 사용하여 이 작업을 수행할 수 있습니다. ~/project 디렉토리에서 마우스 오른쪽 버튼을 클릭하고 "새 파일"을 선택한 다음 DoubleCheck.java를 입력합니다.
이제 편집기에서 DoubleCheck.java 파일을 열고 다음 코드를 추가합니다.
public class DoubleCheck {
public static void main(String[] args) {
// Declare a primitive double variable
double primitiveDouble = 123.45;
// Declare a Double object
Double doubleObject = 67.89;
// Declare an Integer object
Integer integerObject = 100;
// Check if primitiveDouble is an instance of Double (This will not work directly)
// System.out.println("Is primitiveDouble an instance of Double? " + (primitiveDouble instanceof Double)); // This line would cause a compile error
// Check if doubleObject is an instance of Double
System.out.println("Is doubleObject an instance of Double? " + (doubleObject instanceof Double));
// Check if integerObject is an instance of Double
System.out.println("Is integerObject an instance of Double? " + (integerObject instanceof Double));
}
}
이 코드에서:
- 기본
double변수primitiveDouble을 선언합니다. Double객체doubleObject를 선언합니다.- 비교를 위해
Integer객체integerObject를 선언합니다. instanceof연산자를 사용하여doubleObject와integerObject가Double클래스의 인스턴스인지 확인합니다.instanceof연산자는double과 같은 기본 타입과 직접 사용할 수 없다는 점에 유의하십시오.
DoubleCheck.java 파일을 저장합니다.
이제 프로그램을 컴파일하고 실행해 보겠습니다. WebIDE 하단의 터미널을 엽니다. ~/project 디렉토리에 있는지 확인합니다.
javac를 사용하여 코드를 컴파일합니다.
javac DoubleCheck.java
컴파일 오류가 없으면 java를 사용하여 컴파일된 코드를 실행합니다.
java DoubleCheck
다음과 유사한 출력을 볼 수 있습니다.
Is doubleObject an instance of Double? true
Is integerObject an instance of Double? false
이 출력은 doubleObject가 Double 클래스의 인스턴스이고 integerObject는 그렇지 않음을 확인합니다. 이는 Java 에서 instanceof 연산자를 사용하여 객체의 유형을 확인하는 방법을 보여줍니다.
문자열을 Double 로 파싱
이 단계에서는 숫자를 나타내는 String을 Java 에서 double 값으로 변환하는 방법을 배우겠습니다. 이는 사용자 입력이나 파일에서 읽는 등 텍스트로 숫자 입력을 받을 때 흔히 발생하는 작업입니다. Double 클래스는 이 목적으로 특별히 parseDouble()이라는 정적 메서드를 제공합니다.
~/project 디렉토리에 StringtoDouble.java라는 새 Java 파일을 생성해 보겠습니다. WebIDE 의 파일 탐색기를 사용하여 이 파일을 생성합니다.
StringtoDouble.java를 열고 다음 코드를 추가합니다.
public class StringtoDouble {
public static void main(String[] args) {
// A string representing a double value
String doubleString = "987.65";
// Another string representing a double value
String anotherDoubleString = "3.14159";
// A string that is not a valid double
String invalidDoubleString = "hello";
// Parse the strings to double values
try {
double parsedDouble1 = Double.parseDouble(doubleString);
double parsedDouble2 = Double.parseDouble(anotherDoubleString);
System.out.println("Parsed double from \"" + doubleString + "\": " + parsedDouble1);
System.out.println("Parsed double from \"" + anotherDoubleString + "\": " + parsedDouble2);
// Attempt to parse an invalid string (This will cause an error)
// double parsedDouble3 = Double.parseDouble(invalidDoubleString);
// System.out.println("Parsed double from \"" + invalidDoubleString + "\": " + parsedDouble3);
} catch (NumberFormatException e) {
System.out.println("Error parsing string: " + e.getMessage());
}
}
}
이 코드에서:
- 유효한 double 숫자를 포함하는 두 개의 문자열
doubleString과anotherDoubleString이 있습니다. - 유효한 숫자를 나타내지 않는
invalidDoubleString도 있습니다. Double.parseDouble()을 사용하여 유효한 문자열을double기본 값으로 변환합니다.- 파싱 코드를
try-catch블록으로 묶습니다. 문자열을 유효한 double 로 파싱할 수 없는 경우 (invalidDoubleString과 같은 경우)parseDouble()이NumberFormatException을 발생시키기 때문에 이는 중요합니다.catch블록은 이 오류를 적절하게 처리합니다.
StringtoDouble.java 파일을 저장합니다.
이제 프로그램을 컴파일하고 실행해 보겠습니다. 터미널을 열고 ~/project 디렉토리에 있는지 확인합니다.
코드를 컴파일합니다.
javac StringtoDouble.java
컴파일된 코드를 실행합니다.
java StringtoDouble
다음과 유사한 출력을 볼 수 있습니다.
Parsed double from "987.65": 987.65
Parsed double from "3.14159": 3.14159
invalidDoubleString을 파싱하려는 줄의 주석 처리를 해제하고 코드를 다시 실행하면 catch 블록의 오류 메시지가 표시되어 프로그램이 잘못된 입력을 처리하는 방식을 보여줍니다.
이 단계에서는 숫자 문자열 표현을 실제 double 값으로 변환하는 방법을 보여줍니다. 이는 Java 프로그램에서 입력을 처리하는 데 필수적인 기술입니다.
Double 과 Integer 구분하기
이 단계에서는 Java 에서 double과 int (정수) 값의 차이점을 살펴보고, 특히 유사하게 보이는 숫자를 다룰 때 어떻게 구분하는지 알아보겠습니다. double은 소수점이 있는 숫자와 정수를 모두 나타낼 수 있지만, int는 정수만 나타낼 수 있습니다. 이 차이점을 이해하는 것은 올바른 데이터 타입을 선택하고 정확한 계산을 수행하는 데 매우 중요합니다.
WebIDE 의 파일 탐색기를 사용하여 ~/project 디렉토리에 NumberTypes.java라는 새 Java 파일을 생성해 보겠습니다.
NumberTypes.java를 열고 다음 코드를 추가합니다.
public class NumberTypes {
public static void main(String[] args) {
// An integer variable
int integerValue = 10;
// A double variable representing a whole number
double doubleValueWhole = 20.0;
// A double variable representing a number with a decimal part
double doubleValueDecimal = 30.5;
// Print the values and their types (implicitly)
System.out.println("Integer value: " + integerValue);
System.out.println("Double value (whole): " + doubleValueWhole);
System.out.println("Double value (decimal): " + doubleValueDecimal);
// Check the type using instanceof (for wrapper classes)
Integer integerObject = 100;
Double doubleObject = 200.0;
System.out.println("Is integerObject an instance of Integer? " + (integerObject instanceof Integer));
System.out.println("Is doubleObject an instance of Double? " + (doubleObject instanceof Double));
System.out.println("Is integerObject an instance of Double? " + (integerObject instanceof Double));
System.out.println("Is doubleObject an instance of Integer? " + (doubleObject instanceof Integer));
// Demonstrate potential issues with comparing double and int
System.out.println("Is integerValue equal to doubleValueWhole? " + (integerValue == doubleValueWhole)); // This comparison works due to type promotion
// System.out.println("Is integerValue equal to doubleValueDecimal? " + (integerValue == doubleValueDecimal)); // This would be false
}
}
이 코드에서:
int변수integerValue를 선언합니다.- 두 개의
double변수를 선언하는데, 하나는 정수 (doubleValueWhole) 를 나타내고 다른 하나는 소수 부분이 있는 숫자 (doubleValueDecimal) 를 나타냅니다. - 이러한 값을 출력하여 표현을 관찰합니다.
- 첫 번째 단계에서 했던 것과 유사하게, 래퍼 클래스
Integer및Double과 함께instanceof연산자를 사용하여 객체 유형을 명시적으로 확인합니다. - 또한
int와double간의 비교를 보여줍니다. Java 는 타입 프로모션을 수행하여 비교 전에int를double로 변환하므로integerValue == doubleValueWhole은true로 평가됩니다.
NumberTypes.java 파일을 저장합니다.
이제 프로그램을 컴파일하고 실행해 보겠습니다. 터미널을 열고 ~/project 디렉토리에 있는지 확인합니다.
코드를 컴파일합니다.
javac NumberTypes.java
컴파일된 코드를 실행합니다.
java NumberTypes
다음과 유사한 출력을 볼 수 있습니다.
Integer value: 10
Double value (whole): 20.0
Double value (decimal): 30.5
Is integerObject an instance of Integer? true
Is doubleObject an instance of Double? true
Is integerObject an instance of Double? false
Is doubleObject an instance of Integer? false
Is integerValue equal to doubleValueWhole? true
이 출력은 int와 double 값이 저장되고 표현되는 방식의 차이점과 래퍼 클래스와 함께 instanceof를 사용하여 해당 유형을 확인하는 방법을 보여줍니다. double은 정수 값을 가질 수 있지만, 근본적으로 정수 유형과는 구별되는 부동 소수점 유형입니다.
요약
이 Lab 에서는 Java 에서 숫자가 Double인지 확인하는 방법을 배웠습니다. Double 래퍼 클래스를 살펴보고 instanceof 연산자를 사용하여 객체가 Double의 인스턴스인지 확인하는 것으로 시작했습니다. instanceof는 Double 객체와 함께 작동하지만 기본 double 타입과는 직접적으로 작동하지 않는다는 것을 확인했습니다.



