Java 에서 부울 표현식의 유효성 검사 방법

JavaBeginner
지금 연습하기

소개

이 랩에서는 Java 에서 부울 표현식 (boolean expression) 의 유효성을 확인하는 방법을 배우게 됩니다. 비교 연산자 (comparison operator) 를 사용하여 간단한 부울 표현식을 평가하는 것으로 시작합니다.

다음으로, 논리 연산자 (logical operator) 를 사용하여 간단한 표현식을 결합하여 복합 부울 표현식 (compound boolean expression) 을 처리하는 방법을 탐구할 것입니다. 마지막으로, Java 코드에서 유효하지 않은 부울 표현식으로 작업할 때 발생할 수 있는 오류를 식별하고 포착하는 방법을 배우게 됩니다.

간단한 부울 표현식 평가

이 단계에서는 Java 에서 부울 표현식 (boolean expression) 에 대해 배우고 간단한 표현식을 평가하는 방법을 배웁니다. 부울 표현식은 조건이 참 (true) 인지 거짓 (false) 인지에 따라 결정을 내릴 수 있도록 해주므로 프로그래밍에서 기본입니다.

부울 표현식은 true 또는 false로 평가되는 문입니다. Java 에서는 이러한 표현식을 만들기 위해 비교 연산자 (comparison operator) 를 사용합니다. 다음은 몇 가지 일반적인 비교 연산자입니다.

  • ==: 같음
  • !=: 같지 않음
  • >: 큼
  • <: 작음
  • >=: 크거나 같음
  • <=: 작거나 같음

몇 가지 부울 표현식을 평가하는 간단한 Java 프로그램을 만들어 보겠습니다.

  1. WebIDE 편집기에서 HelloJava.java 파일을 엽니다 (아직 열려 있지 않은 경우).

  2. 파일의 전체 내용을 다음 코드로 바꿉니다.

    public class HelloJava {
        public static void main(String[] args) {
            int x = 10;
            int y = 20;
    
            boolean isEqual = (x == y);
            boolean isNotEqual = (x != y);
            boolean isGreater = (x > y);
            boolean isLess = (x < y);
            boolean isGreaterOrEqual = (x >= y);
            boolean isLessOrEqual = (x <= y);
    
            System.out.println("Is x equal to y? " + isEqual);
            System.out.println("Is x not equal to y? " + isNotEqual);
            System.out.println("Is x greater than y? " + isGreater);
            System.out.println("Is x less than y? " + isLess);
            System.out.println("Is x greater than or equal to y? " + isGreaterOrEqual);
            System.out.println("Is x less than or equal to y? " + isLessOrEqual);
        }
    }
    

    이 코드에서:

    • 두 개의 정수 변수 xy를 선언합니다.
    • 여러 부울 변수 (isEqual, isNotEqual 등) 를 만들고 각 변수에 부울 표현식의 결과를 할당합니다.
    • System.out.println을 사용하여 이러한 부울 표현식의 결과를 출력합니다.
  3. 파일을 저장합니다 (Ctrl+S 또는 Cmd+S).

  4. 터미널에서 다음 명령을 실행하여 프로그램을 컴파일합니다.

    javac HelloJava.java
    

    오류가 없으면 HelloJava.class 파일이 생성됩니다.

  5. 컴파일된 프로그램을 실행합니다.

    java HelloJava
    

    각 부울 표현식의 결과를 보여주는 출력을 볼 수 있습니다.

    Is x equal to y? false
    Is x not equal to y? true
    Is x greater than y? false
    Is x less than y? true
    Is x greater than or equal to y? false
    Is x less than or equal to y? true
    

Java 에서 간단한 부울 표현식을 성공적으로 평가했습니다! 값을 비교하고 true 또는 false 결과를 얻는 방법을 이해하는 것은 프로그램의 흐름을 제어하는 데 매우 중요합니다.

복합 표현식 처리

이 단계에서는 논리 연산자 (logical operator) 를 사용하여 간단한 부울 표현식을 결합하여 더 복잡한 표현식을 만드는 방법을 배웁니다. 이러한 표현식을 복합 표현식 (compound expression) 이라고 하며, 여러 조건을 한 번에 확인할 수 있습니다.

Java 는 다음과 같은 논리 연산자를 제공합니다.

  • &&: 논리 AND. 조건이 모두 true인 경우에만 표현식이 true입니다.
  • ||: 논리 OR. 최소한 하나의 조건이 true인 경우 표현식이 true입니다.
  • !: 논리 NOT. 이 연산자는 표현식의 부울 값을 반전시킵니다. 표현식이 true이면 !false로 만들고, 그 반대의 경우도 마찬가지입니다.

HelloJava.java 프로그램을 수정하여 이러한 논리 연산자를 사용해 보겠습니다.

  1. WebIDE 편집기에서 HelloJava.java 파일을 엽니다.

  2. 현재 코드를 다음으로 바꿉니다.

    public class HelloJava {
        public static void main(String[] args) {
            int age = 25;
            int score = 85;
            boolean isStudent = true;
    
            // Using Logical AND (&&)
            boolean isEligibleForDiscount = (age > 18 && isStudent);
            System.out.println("Is eligible for student discount? " + isEligibleForDiscount);
    
            // Using Logical OR (||)
            boolean passedExam = (score >= 70 || age < 18);
            System.out.println("Passed the exam? " + passedExam);
    
            // Using Logical NOT (!)
            boolean isNotStudent = !isStudent;
            System.out.println("Is not a student? " + isNotStudent);
    
            // Combining multiple operators
            boolean complexCondition = (age > 20 && score > 80 || !isStudent);
            System.out.println("Complex condition result: " + complexCondition);
        }
    }
    

    이 업데이트된 코드에서:

    • 새로운 변수 age, score, isStudent를 소개합니다.
    • &&를 사용하여 학생 할인을 받을 자격이 있는지 확인합니다 (18 세 이상 AND 학생임).
    • ||를 사용하여 시험에 합격했는지 확인합니다 (점수가 70 점 이상 OR 18 세 미만).
    • !를 사용하여 isStudent 부울 값을 부정합니다.
    • 단일 표현식에서 &&, ||, !를 결합하는 예제를 보여줍니다.
  3. 파일을 저장합니다 (Ctrl+S 또는 Cmd+S).

  4. 터미널에서 프로그램을 컴파일합니다.

    javac HelloJava.java
    

    컴파일 오류가 없는지 확인합니다.

  5. 컴파일된 프로그램을 실행합니다.

    java HelloJava
    

    복합 부울 표현식의 결과를 보여주는 출력을 확인합니다.

    Is eligible for student discount? true
    Passed the exam? true
    Is not a student? false
    Complex condition result: true
    

이제 논리 AND (&&), OR (||), NOT (!) 연산자를 사용하여 복합 부울 표현식을 만들고 평가하는 방법을 배웠습니다. 이를 통해 Java 프로그램에서 더 정교한 조건을 구축할 수 있습니다.

유효하지 않은 표현식 오류 포착

이 단계에서는 Java 에서 유효하지 않은 표현식을 평가하려고 할 때 발생하는 일과 컴파일러가 이러한 오류를 어떻게 잡아내는지 살펴봅니다. 일반적인 오류를 이해하는 것은 모든 프로그래밍 언어를 배우는 데 중요한 부분입니다.

Java 는 강력한 형식 언어 (strongly-typed language) 이므로 데이터의 유형이 중요합니다. 특히 부울 표현식은 부울 값으로 비교하거나 평가할 수 있는 피연산자를 필요로 합니다. 부울 표현식에서 호환되지 않는 유형을 사용하려고 하면 컴파일 오류가 발생합니다.

HelloJava.java 프로그램에 의도적으로 오류를 도입하여 컴파일러가 어떻게 반응하는지 살펴보겠습니다.

  1. WebIDE 편집기에서 HelloJava.java 파일을 엽니다.

  2. 잘못된 비교를 포함하도록 코드를 수정합니다. 예를 들어, 부울과 정수를 비교해 보겠습니다.

    public class HelloJava {
        public static void main(String[] args) {
            int age = 25;
            boolean isStudent = true;
    
            // This line will cause a compilation error
            // boolean invalidComparison = (isStudent == age);
    
            System.out.println("Age: " + age);
            System.out.println("Is student: " + isStudent);
        }
    }
    

    지금은 오류를 발생시킬 줄을 주석 처리했지만, 다음 단계에서 주석 처리를 해제할 것입니다. 주석 처리된 줄 boolean invalidComparison = (isStudent == age);는 동등 연산자 (==) 를 사용하여 boolean 변수 (isStudent) 와 int 변수 (age) 를 비교하려고 시도합니다. Java 는 booleanint가 서로 다른 데이터 유형이므로 이러한 방식으로 의미 있게 비교할 수 없기 때문에 이러한 직접적인 비교를 허용하지 않습니다.

  3. 파일을 저장합니다 (Ctrl+S 또는 Cmd+S).

  4. 이제 오류를 발생시킬 줄의 주석 처리를 해제해 보겠습니다. 코드를 다음과 같이 변경합니다.

    public class HelloJava {
        public static void main(String[] args) {
            int age = 25;
            boolean isStudent = true;
    
            // This line will cause a compilation error
            boolean invalidComparison = (isStudent == age);
    
            System.out.println("Age: " + age);
            System.out.println("Is student: " + isStudent);
            System.out.println("Invalid comparison result: " + invalidComparison);
        }
    }
    
  5. 파일을 다시 저장합니다.

  6. 터미널에서 프로그램을 컴파일해 봅니다.

    javac HelloJava.java
    

    Java 컴파일러에서 오류 메시지가 표시됩니다. 정확한 메시지는 Java 버전에 따라 약간 다를 수 있지만, 유형 불일치 또는 호환되지 않는 유형을 나타냅니다.

    ~/project/HelloJava.java:7: error: incomparable types: boolean and int
            boolean invalidComparison = (isStudent == age);
                                         ^
    1 error
    

    이 오류 메시지는 파일 이름 (HelloJava.java), 줄 번호 (7), 오류 설명 ("incomparable types: boolean and int") 을 알려줍니다. 이것은 프로그램을 실행하려고 시도하기 전에 컴파일러가 실수를 잡아내는 데 도움을 주는 것입니다.

  7. 오류를 수정하고 프로그램을 다시 컴파일 가능하게 만들려면 잘못된 줄을 제거하거나 주석 처리해야 합니다. 코드를 줄이 주석 처리된 버전으로 다시 변경합니다.

    public class HelloJava {
        public static void main(String[] args) {
            int age = 25;
            boolean isStudent = true;
    
            // This line will cause a compilation error
            // boolean invalidComparison = (isStudent == age);
    
            System.out.println("Age: " + age);
            System.out.println("Is student: " + isStudent);
        }
    }
    
  8. 파일을 저장합니다.

  9. 프로그램을 다시 컴파일합니다.

    javac HelloJava.java
    

    이번에는 컴파일이 성공하고 오류 메시지가 표시되지 않습니다.

컴파일 오류를 이해하고 읽는 방법은 모든 프로그래머에게 중요한 기술입니다. Java 컴파일러는 개발 프로세스 초기에 많은 일반적인 실수를 찾는 데 도움이 되는 강력한 도구입니다.

요약

이 랩에서는 Java 에서 부울 표현식의 기본 사항을 배웠습니다. 부울 표현식이 무엇인지, 그리고 어떻게 true 또는 false로 평가되는지 이해하는 것으로 시작했습니다. 그런 다음 ==, !=, >, <, >=, <=와 같은 일반적인 비교 연산자를 사용하여 간단한 부울 표현식을 평가하는 연습을 했습니다. 실용적인 예제를 통해 정수 변수를 선언하고, 이러한 비교 연산자를 적용하여 부울 표현식을 만들고, 결과 부울 값을 출력하는 방법을 살펴보았습니다.

간단한 표현식을 기반으로, && (AND), || (OR), ! (NOT) 과 같은 논리 연산자를 사용하여 간단한 표현식을 결합하여 복합 부울 표현식을 처리하는 방법을 탐구했습니다. 이러한 연산자가 어떻게 작동하는지, 그리고 복잡한 표현식에서 평가 순서를 제어하기 위해 괄호를 사용하는 방법을 배웠습니다. 마지막으로, 잘못된 부울 표현식에서 발생할 수 있는 잠재적인 오류를 처리하는 것의 중요성을 다루었으며, 표현식이 올바르게 평가되지 못하게 할 수 있는 문제를 식별하고 해결하는 방법을 이해했습니다.