Java

실수) sysout 안에 sysout을 넣어 발생한 오류

데브노트 2025. 4. 18. 18:29

메서드를 호출하는 방법을 배우던 중

영문을 알 수 없는 오류가 발생했다.

나중에 알고보니 단순한 문제였다.

 

결론은

sout 안에 void 값을 넣을 수 없다
sout 안에 sout을 또 넣을 수 없다.

//반복문을 활용해 배열 안에 있는 질럿들에 showInfo를 호출하시오

for (int i = 0; i < zealots.length; i++) {
    // TODO 방어적 코드 작성(null point exception)
    if (zealots[i] != null) {
        System.out.print("⭐질럿" + (i + 1) + "상태: ");
        zealots[i].showInfo();

        System.out.println(zealots[i].showInfo()); // 컴파일 에러 발생
        // sout 안에 void 값을 넣을 수 없다
        // sout 안에 sout을 또 넣을 수 없다.

    }//end of if
}//end of for

sysout으로 showInfo 메서드 내용을 출력하려고 했는데 에러가 발생했다.
마우스오버 해보니 이같은 설명이 팝업됐다. 보이드가 어떻다는데 이해하기 힘들다.
Ctrl 클릭으로 showInfo를 추적해보니 답이 나왔다. sysout으로 void 자료형을 출력할 수는 없다. 또 sysout으로 sysout을 출력할 수 없다.
질럿 변수에서 바로 showInfo메서드를 호출하니 오류가 사라지고 올바른 값이 나왔다.