-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
선생님 (!morning) 부분 질문이 있습니다!
23.10.18 17:36 작성 조회수 114
0
boolean morningCoffee= false
if(!morningCoffee){
sout(아이스아메리카노 +!)
}
sout(주문완료)
논리부정연산자로
!morningCoffee == true 가 되는데
morningCoffee가 false가 맞을때 라고 이해해도 될까요?
헷갈려서 질문남깁니다~!
답변을 작성해보세요.
1
나도코딩
지식공유자2023.10.18
안녕하세요?
boolean 변수의 이름을 제가 다르게 했더라면 조금 더 쉽게 이해를 하셨을 것 같은데 제 불찰입니다 😅 morningCoffee 대신 모닝 커피를 마셨다는 의미로 hadMorningCoffee 로 변수를 바꿔서 설명 드릴게요.
boolean hadMorningCoffee= false;
if (!hadMorningCoffee){
System.out.println("아이스 아메리카노 +1");
}
그럼 위 코드와 같이 hadMorningCoffee 는 false 이므로 모닝 커피를 마시지 않은 상태이며, if ( 조건 ) 문에서 ( 조건 ) 에 해당하는 부분이 참일 때 괄호 속의 명령문이 수행이 되겠지요.
그리고 이 조건은 다음의 순서로 이해하시면 되겠습니다.
( ! hadMorningCoffee ) // 모닝 커피를 마신 것이 아니다
( ! false ) // false 가 아니다
( true ) // true 이다
그러므로 조건은 참 이 되어 if 문 내부가 실행되는 것입니다.
말씀하신 것처럼 morningCoffee 가 false 가 아니라면 <= 처럼 생각하셔도 옳습니다. 하지만 이렇게 하면 다소 헷갈릴 수 있으므로 hadMorningCoffee 로 변수명을 바꿔서 이해해주시고, 이렇게 하게 되면 !hadMorningCoffee 는 코드 그대로 모닝 커피를 마신 것(=hadMorningCoffee)이 아니다(!) 로 쉽게 풀이가 될 것 같아요.
if (hadMorningCoffee) { ... } // 모닝 커피를 마셨다
if (!hadMorningCoffee) { ... } // 모닝 커피를 마시지 않았다
궁금증 해결에 도움이 되길 바라겠습니다 😊
감사합니다.
답변 1