결과값이 왜 NaN으로 나올까요..?
힌트와 정답코드를 봐도 이해가 안 갑니다 ㅠㅠ
속도 변환하기
CODE Link
public class Speed {
public static void main (String[] args) {
int meter = Integer.parseInt(args[0]);
int sec = Integer.parseInt(args[1]);
//1km = 1000m
double kilo = meter/1000;
double hour = sec/(60*60);
//속도 = 거리/시간
double speed = kilo/hour;
System.out.printf("%.1f km/h", speed);
}
}
INPUT
100 18
OUPUT
NaN km/h
sehongpark님의 답변
kilo와 hour의 값을 중간 중간 확인해보세요.
아래 코드를 실행하면
public class SpeedByJiyoung {
public static void main(String[] args) {
int meter = 100;
int sec = 18;
// 1km = 1000m
double kilo = meter / 1000;
System.out.println("kilo = " + kilo);
// hour =
double hour = sec / (60 * 60);
System.out.println("hour = " + hour);
//속도 = 거리/시간
double speed = kilo / hour;
System.out.printf("%.1f km/h", speed);
}
}
결과는 다음과 같습니다.
kilo = 0.0
hour = 0.0
NaN km/h
여기서 좀 의아할겁니다. kilo 값이 왜 0.0이지? hour는 왜 또 0.0인가..? 싶을 건데요.
int 와 int의 연산은 int 입니다.
아래 코드에서 kilo의 값이 0.1이길 기대하겠지만, 소수점 이하가 버려진 0
이 됩니다.
double kilo = 100 / 1000;
// double kilo = 0;
// double kilo = 0.0;
그럼 어떻게 해야할까? meter와 sec를 double 변수로 선언하면 됩니다.
public class SpeedByJiyoung {
public static void main(String[] args) {
double meter = 100;
double sec = 18;
// 1km = 1000m
double kilo = meter / 1000;
System.out.println("kilo = " + kilo);
// hour =
double hour = sec / (60 * 60);
System.out.println("hour = " + hour);
//속도 = 거리/시간
double speed = kilo / hour;
System.out.printf("%.1f km/h", speed);
}
}
수행 결과
kilo = 0.1
hour = 0.005
20.0 km/h
자세한 내용은 다음 링크를 확인해보세요. 타입과 형변환(https://cloudstudying.kr/lectures/70)