# 잘못된 파라미터 잘못된 메소드를 수정할때 위의 것은 int a = square ((int) 3.0); 으로 바꿔준것 처럼 밑의 것도 int b = cube((int) 2); 해주니 에러가 납니다. 왜 int b = cube((int) 2); 가 아닌 int b = (int) cube(2); 인가요? ## CODE <a class='btn btn-default' href='/codes/11428'>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 ```
# A. double 값을 int로 직접 대입할 수 없습니다. cube() 메소드의 반환 값은 double 입니다. ``` public static double cube(double n) { return n * n * n; } ``` 이를 int 변수로 대입할 수 없습니다. 타입 불일치의 문제가 발생하기 때문입니다. ``` int b = cube((int) 2); // 메소드의 반환 값(double)을, int 변수 b로 대입할 수 없음. ``` double을 int로 대입하기 위해서는 강제변환 즉, 캐스팅이 필요합니다. ``` int b = (int) 8.0; ```