• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

선생님 (!morning) 부분 질문이 있습니다!

23.10.18 17:36 작성 조회수 114

0

 boolean morningCoffee= false

if(!morningCoffee){

sout(아이스아메리카노 +!)

}

sout(주문완료)

 

논리부정연산자로

!morningCoffee == true 가 되는데

morningCoffee가 false가 맞을때 라고 이해해도 될까요?

헷갈려서 질문남깁니다~!

답변 1

답변을 작성해보세요.

1

안녕하세요?

boolean 변수의 이름을 제가 다르게 했더라면 조금 더 쉽게 이해를 하셨을 것 같은데 제 불찰입니다 😅 morningCoffee 대신 모닝 커피를 마셨다는 의미로 hadMorningCoffee 로 변수를 바꿔서 설명 드릴게요.

boolean hadMorningCoffee= false;
if (!hadMorningCoffee){
    System.out.println("아이스 아메리카노 +1");
}

그럼 위 코드와 같이 hadMorningCoffee 는 false 이므로 모닝 커피를 마시지 않은 상태이며, if ( 조건 ) 문에서 ( 조건 ) 에 해당하는 부분이 참일 때 괄호 속의 명령문이 수행이 되겠지요.

그리고 이 조건은 다음의 순서로 이해하시면 되겠습니다.

  1. ( ! hadMorningCoffee ) // 모닝 커피를 마신 것이 아니다

  2. ( ! false ) // false 가 아니다

  3. ( true ) // true 이다

그러므로 조건은 이 되어 if 문 내부가 실행되는 것입니다.

말씀하신 것처럼 morningCoffee 가 false 가 아니라면 <= 처럼 생각하셔도 옳습니다. 하지만 이렇게 하면 다소 헷갈릴 수 있으므로 hadMorningCoffee 로 변수명을 바꿔서 이해해주시고, 이렇게 하게 되면 !hadMorningCoffee 는 코드 그대로 모닝 커피를 마신 것(=hadMorningCoffee)이 아니다(!) 로 쉽게 풀이가 될 것 같아요.

if (hadMorningCoffee) { ... } // 모닝 커피를 마셨다
if (!hadMorningCoffee) { ... } // 모닝 커피를 마시지 않았다

궁금증 해결에 도움이 되길 바라겠습니다 😊
감사합니다.

HRDM님의 프로필

HRDM

질문자

2023.10.18

선생님 불찰이라뇨 아닙니다 ㅠㅠ
설명 감사합니다 이해됐습니다!!