내일배움캠프 2주차 3일,4일

오늘 자바문법 종합반 2주차에서 if절에 대한 연습을 하다가 에러를 만났다. 바로 자바 초보자들이 많이 한다는 괄호를 제대로 닫지 않아 생기는 "java: ')' expected" 와 "java: 'else' without 'if' errors...!(아니야...그거 아니야)

하필이면 잘못된 명령어를 복붙을 하여 에러가 24개나 된다!

문장이 너무 길어 찾는데 시간이 너무 걸릴거 같아 if절 한 세션만 남기고 다 지우기로 결정.

이렇게 하면 남은 에러는 7개...
여기에서 처음부터 찬찬히 살펴보려 했으나
... 컴퓨터를 오랫동안 붙잡고 있어 집중력이 많이 깨졌는지 어디서 빠졌는지 잘 보이지 않아 오류가 난 부분부터 다시 작성하기로 했다.

굿! 오류 없음!
다시 처음부터 작성해 보는데 작성 도중에 오류가 계속 뜨는걸 발견할 수 있었다.

Cannot resolve symbol 에러...로 검색해보니 IntelliJ IDEA에서 자주 보이는 에러라는
이제 생각해보니 처음에 작성한 코드도 이런 문제이지 않았을까 한다. Objects를 입력할 때 빨간 밑줄이 계속 생겨서 쎄했는데... 이번에는 (Objects.equals(aHand, b:"가위"))항목에서 b에 계속 빨간 밑줄이 생긴다. ㅋㅋㅋㅋ
우선 코드를 다 작성한 후 아래의 방법 중 하나를 택해서 해결해봐야겠다.
#### 해결 방법

  • 1번째 방법 : 빌드를 다시 한다.
    상단 메뉴바 Build > Clean Project 하고 나서, Build > Rebuild Project

  • 2번째 방법: 캐시를 비우고 재실행한다.
    상단 메뉴바 File > Invalidate Caches / Restart… 를 선택 -> IDE가 재실행된다.

  • 3번째 방법: Gradle을 Refresh 해준다.
    상단 메뉴바 View > Tool Windows > Gradle에 들어간다.
    -> 프로젝트명을 마우스 우클릭하여, Refresh Gradle Dependencies를 누르고 기다린다.

  • 4번째 방법: Gradle 빌드 설정을 IntelliJ IDEA 로 바꿔준다.
    Preference창(단축키: Ctrl+Alt+S)을 띄워 Build,Execution,Deployment > Build Tool > Gradle > Build and Run 에서 설정이 Gradle로 되어있다면 모두 IntelliJ IDEA로 바꿔준다.

  • 5번째 방법: 위 방법들로도 해결이 안 되면, IDE를 최신버전으로 업데이트가 되어있는지 확인해본다. 그냥 업데이트해서 해결된 경우도 있다고 한다.

코드를 다 작성 후 혹시나 실행시켜보았으나

역시나 안됨.
상단이 오류 해결방법으로 해볼려고 했으나 무료버전이여서 기능이 없는게 많고 혼자서는 해결하기 어렵다고 판단했다. 내일 튜터님께 물어봐야겠다..

.
.
.

(UDATE)5/25

튜터님께 물어보고옴
이제까지 한 건 모두 삽질...
원인은 내가 equals와 이 프로그램을 제대로 이해하지 못한 것. 이 프로그램의 이름 IDE는 Integrated Development Environment의 약자로 통합 개발 환경이란 뜻을 가지고 있다. 그래서 엄청 똑똑하고 우리가 코팅을 할 때 많이 도움을 주는데...그 도움을 이해하지 못한 나란 사람...

강의 화면에 if (Objects.equals(aHand, b:"가위"))로 보여서 이 아이는 어디에서 나온 b인가 하면서 b:을 string으로 입력하였는데 그게 이번 오류의 주원인이였다. 원래는 if (Objects.equals(aHand, "가위"))가 맞다. 그럼 내가 본 b:은 무엇이냐
그건 equals를 Ctrl을 누른 상태로 클릭해보면 알 수 있다.

TA-DA!
Objects.equals(Objects)위에 Params(매개변수)에 a는 오브젝트, b는 a와 비교할 객체라고 나와있다. Object 클래스의 equals 메소드는, == 연산자로 두 객체를 비교. 두 객체의 주소값이 같으면 true 를 , 그렇지 않으면 false 를 리턴. 이 경우 true 를 리턴하기 위해선, 주소값이 같은 객체를 비교해야하며, 이는 곧 동일한 객체인지의 여부를 판별하는 것과 같다.
즉, 이 똑똑한 IDE가 "가위"가 b야!라고 알려준 거라고 이해하면 된다.

결론은 string으로 입력한 b:를 모두 지우고! 괄호를 잘못 입력한 부분이 보여 지워주니 실행이 되었다.

끝!

1개의 댓글

comment-user-thumbnail
2023년 5월 25일

TA-DA! 훌륭하게 해결해내셨군요 ㅎㅎ
코드는 한 글자로 영향을 받기 때문에 잘 써주어야 합니다!
좋은 깨달음을 얻으신 것 같아 다행이군요! 화이팅입니다~

답글 달기