728x90
반응형
단위 변환기
단위 변환기를 만들어봅시다.
우리가 만들 단위 변환기는 인스턴스를 생성하지 않고도 사용할 수 있도록, 클래스 변수와 클래스 메소드로만 이루어져 있습니다. 언제든 간편하게 사용할 수 있는 도구를 만드는 거죠!
상수
이 클래스와 관련 있는 상수(static final 변수)를 만들어야 합니다.
1 파운드 = 0.45359237 킬로그램
1 인치 = 2.54 센티미터
위의 두 공식을 이용해서 상수 네 개(KILOGRAMS_PER_POUND, POUNDS_PER_KILOGRAM, CENTIMETERS_PER_INCH, INCHES_PER_CENTIMETER)를 만들어보세요.
예시
public static final double KILOGRAMS_PER_POUND = 0.45359237;
클래스 메소드
앞서 만든 상수들을 활용하여 무게와 길이 단위를 전환하는 메소드를 만들어주세요. 추가로 섭씨에서 화씨로, 또 화씨에서 섭씨로 전환하는 메소드도 만들어주세요.
섭씨를 화씨로 전환하는 수학적 공식은 아래와 같습니다:
°F = °C × (9 / 5) + 32
그리고 화씨를 섭씨로 전환하는 수학적 공식은 아래와 같습니다:
°C = (°F − 32) x (5 / 9)
보너스: private 생성자
UnitConverter 클래스는 인스턴스를 만들지 않고, static한 방법으로만 사용하고 싶습니다. 이런 경우, 생성자를 private으로 선언하여 인스턴스 생성을 막을 수 있습니다.
UnitConverter의 생성자를 private으로 만들어 외부에서 인스턴스 생성을 못 하게 막아주세요!
35 lb -> 15.88 kg
62 kg -> 136.69 lb
12.2 in -> 30.99 cm
3.82 cm -> 1.50 in
48 °F -> 8.89 °C
-9 °C -> 15.80 °F
본인 작성 코드
public class UnitConverter {
// 필요한 상수 정의
public static final double KILOGRAMS_PER_POUND = 0.45359237;
public static final double POUNDS_PER_KILOGRAM = 2.204623;
public static final double CENTIMETERS_PER_INCH = 2.54;
public static final double INCHES_PER_CENTIMETER = 0.393701;
// 인스턴스 생성 불가
private UnitConverter() {
}
public static double toPounds(double kilograms) {
double pounds = kilograms * POUNDS_PER_KILOGRAM;
return pounds;
}
public static double toKilograms(double pounds) {
double kilo = pounds * KILOGRAMS_PER_POUND;
return kilo;
}
public static double toCentimeters(double inches) {
double centi = inches * CENTIMETERS_PER_INCH;
return centi;
}
public static double toInches(double centimeters) {
double inches = centimeters * INCHES_PER_CENTIMETER;
return inches;
}
public static double toFahrenheit(double celsius) {
// 메소드 내부를 채워주세요 °F = °C × (9 / 5) + 32
double f = celsius * 1.8 + 32;
// celsius * 9 / 5 + 32 -> (9 / 5)를 하면 정수형으로 변환되어 원하는 값이 안나오니 괄호를 풀어주기
return f;
}
public static double toCelsius(double fahrenheit) {
// 메소드 내부를 채워주세요 °C = (°F − 32) x (5 / 9)
double c = (fahrenheit - 32) / 1.8;
return c;
}
}
결과

728x90
반응형
'TIL > Java' 카테고리의 다른 글
[Java] 숫자 도구(Math, Random) (0) | 2022.01.10 |
---|---|
[Java] String 클래스(대소문자 변환, 문자열비교_equals) (0) | 2022.01.10 |
[Java] 인스턴스 메소드 vs 클래스 메소드 (0) | 2022.01.07 |
[Java] 인스턴스 변수 vs 클래스 변수 (0) | 2022.01.07 |
[Java] 예외(Exception) - 코드 안전하게 만들기(try-catch 예외 처리) (0) | 2022.01.07 |