잘못된 파라미터 문제중
### 제가 적은 답 (정답)
```
public class WhatIsWrong {
public static void main(String[] args) {
int a = square((int)3.0);
int b = cube(2);
System.out.printf("a = %d, b = %d\n", a, b);
}
public static int square(int n) {
return n * n;
}
public static int cube(int n) {
return n * n * n;
}
}
```
### 예시 답
```
public class WhatIsWrong {
public static void main(String[] args) {
int a = square((int) 3.0);
int b = (int) cube(2);
System.out.printf("a = %d, b = %d\n", a, b);
}
public static int square(int n) {
return n * n;
}
public static double cube(double n) {
return n * n * n;
}
}
```
스퀘어에 있는 값은 3.0이라서 캐스팅해서 int 값으로 변경했는데,
큐브에 있는 값은 2라서 이미 정수값이기 때문에 캐스팅 안하고 아래 내려가서
큐브 메소드에 있는 더블을 인트로 변경 해주었는데
홍팍님의 답은
큐브 2 또한 괄호안에 캐스팅이 아닌 큐브 앞에 캐스팅이 되어 있더라구요
이게 어떤 의미 인가요??
그러고 아래 큐브 메소드 그대로 더블로 되어 있고,
답변부탁드립니다.
항상 배우고 있어서 감사드립니다.
sehongpark님의 답변
# 답변
기존의 메소드를 변경하지 않고, 캐스팅을 사용해 에러를 해결한 코드입니다.
```
// 메소드 호출
int b = (int) cube(2);
// 메소드 정의
public static double cube(double n) {
return n * n * n;
}
```
위 코드에서 `cube(2)`의 반환 값은 8.0입니다. 때문에 아래 코드와 같이 에러가 발생합니다.
```
int b = 8.0; // ERROR
```
이를 해결하기 위해, 캐스팅을 사용하였습니다.
```
int b = (int) 8.0;
```
## PS.
좋은 질문 감사합니다.