자바 부울 해석과 빈칸이 뭔지좀 알려주세요 ㅠㅠ

안녕하세요. 자바 초보학습자입니다 귀엽게 봐주세요ㅠ

맨밑의 사진이 문제고, 그 위의 사진이 실행결과와 힌트입니다.

힌트를보고 제가 자바유틸스캐너 가져오고, 이제 줄쳐놓은부분 isCapital이 스캐너 입력값이 1일시 true로 해석을 했는데요.

1.문제는 맨마지막 boolean isMetro = isCapital && citizen s >= 100 || ( ); 부분입니다.

isCaptal 과 citizens가 둘다 100 이상이 될때의 논리로 이해를 했는데 isCapital의 경우 위의 boolean타입으로 인해서 true or false의 값을 가지는 거 아닌가요? 100이상의 조건이 왜 붙는지를 이해를 못했습니다. 이부분좀 알려주시면 감사하겠습니다 ㅠㅠ

2.그리고 힌트의 빈칸 부분 마저 알려주시면 감사하겠습니다.

2개의 답변이 있어요!

  • 문제에서 인구가 100만 이상이어야 한다고 했으니 citizens >= 100 이라는 조건이 있어야 합니다. 연산자 우선순위에 의해 관계 연산자부터 실행이 되므로 citizens >= 100 이 부분부터 실행이 되어 true 나 false 값이 정해집니다. 그런 다음 isCapital && true 나 false 이런 식으로 비교할 수 있어 연산이 정상적으로 실행이 됩니다.

    첫 번째 빈칸은 숫자를 입력받아야 하므로 riches = sc.nextInt()

    두 번째 빈칸은 부자가 50만 이상인 조건을 만들어야 함으로 riches >= 50 입니다.

  • 안녕하세요

    이 문제의 핵심은 boolean isMetro를 구하는 것이네요~!

    먼저 boolean isMetro = () // 괄호를 구하자!

    이렇게 나눠서 생각하시고 괄호안만 논리적으로 따지시면 됩니다.

    1) isCapital 값이 0이면 false 1이면 true // isCapital 값이 1이므로 true

    2) citizens >= 100 // citizens 값이 100보다 크면 true

    3) riches >= 50 // riches 값이 50보다 크면 true

    구하고자 하는 로직은

    수도여야 하고 (AND사용)

    조건에 보면 인구가 100만 이상이거나 부자가 50만 이상인 조건이므로 (OR사용!! 왜?? 조건중 하나만 만족하면 참)

    boolean isMetro = isCapital && citizens >= 100 || riches >= 50;

    이렇게 표현하면 됩니다. 가독성을 위해 괄호를 활용한다면

    boolean isMetro = isCapital && ( citizens >= 100 || riches >= 50 );

    이렇게 보시면 훨씬 쉬울거라 생각해요!!