잘못된 파라미터 문제중 ### 제가 적은 답 (정답) ``` 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 또한 괄호안에 캐스팅이 아닌 큐브 앞에 캐스팅이 되어 있더라구요 이게 어떤 의미 인가요?? 그러고 아래 큐브 메소드 그대로 더블로 되어 있고, 답변부탁드립니다. 항상 배우고 있어서 감사드립니다.
# 답변 기존의 메소드를 변경하지 않고, 캐스팅을 사용해 에러를 해결한 코드입니다. ``` // 메소드 호출 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. 좋은 질문 감사합니다.