# 잘못된 파라미터
#### CODE <a class='btn btn-default' href='/codes/67525'>Link</a>
```
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;
}
}
```
#### INPUT
```
```
#### OUPUT
```
a = 9, b = 8
```
3번째 줄에서 더블인 3.0을 인트로 바꾸는데 square((int) 3.0);이라고 적은 반면
4번째 줄에서 인트를 더블로 바꿀 때는 (int) cube(2); 이런 식으로 메소드 이름 앞에 (int)를 적어주셨는데 왜 이렇게 다른 건가요? 둘이 똑같은 방식으로 바꿀 수는 없는건가요?
sehongpark님의 답변
## 두 캐스팅은
캐스팅 시점이 다르므로,
다른 방식의 캐스팅을 적용해야 합니다.
#### 3번째 줄의 캐스팅은
메소드 호출 전, 입력값을 캐스팅 하는 코드입니다.
```
int a = square((int) 3.0); // 메소드로 전달할 입력값을 3.0이 아닌 3으로 캐스팅
```
#### 반면, 4번째 줄은
메소드 호출이 끝나고, 반환된 결과값을 캐스팅하는 코드입니다.
```
int b = (int) cube(2); // 메소드에서 반환된 값 8.0을 2로 캐스팅
```