Java 에서 배열에 양수만 있는지 확인하는 방법

JavaBeginner
지금 연습하기

소개

이 랩에서는 Java 에서 배열이 양수만 포함하는지 확인하는 방법을 배우게 됩니다. 배열을 반복하고 각 요소를 개별적으로 확인하는 루프를 사용하는 기본적인 방법부터 시작하여 다양한 접근 방식을 탐구할 것입니다.

기본 루프 방법 다음에, 컬렉션을 처리하는 더 현대적이고 종종 더 간결한 방법인 Java Stream API 를 사용하는 방법을 자세히 살펴보겠습니다. 마지막으로, 배열이 양수 값만 포함하는지 여부를 결정하는 맥락에서 0 과 음수를 처리하는 방법에 대해 논의할 것입니다. 이 랩은 Java 에서 배열 조작 및 조건부 로직에 대한 실질적인 기술을 제공할 것입니다.

양수 확인을 위한 배열 루프

이 단계에서는 Java 에서 숫자 배열을 반복하고 각 숫자가 양수인지 확인하는 방법을 배우겠습니다. 이는 프로그래밍의 기본 연산으로, 데이터 컬렉션을 처리할 수 있게 해줍니다.

먼저, ~/project 디렉토리에 PositiveCheck.java라는 새 Java 파일을 생성해 보겠습니다. 왼쪽의 파일 탐색기에서 마우스 오른쪽 버튼을 클릭하고 "새 파일"을 선택한 다음 PositiveCheck.java를 입력하여 이 작업을 수행할 수 있습니다.

이제 편집기에서 PositiveCheck.java 파일을 열고 다음 코드를 추가합니다.

public class PositiveCheck {

    public static void main(String[] args) {
        // Define an array of integers
        int[] numbers = {10, -5, 20, 0, 15, -8};

        // Loop through the array
        for (int i = 0; i < numbers.length; i++) {
            // Get the current number
            int currentNumber = numbers[i];

            // Check if the number is positive
            if (currentNumber > 0) {
                System.out.println(currentNumber + " is a positive number.");
            }
        }
    }
}

이 코드를 분석해 보겠습니다.

  • public class PositiveCheck: 파일 이름과 일치하는 클래스를 선언합니다.
  • public static void main(String[] args): 프로그램 실행이 시작되는 main 메서드입니다.
  • int[] numbers = {10, -5, 20, 0, 15, -8};: numbers라는 정수 배열을 선언하고 일부 값으로 초기화합니다. 배열은 동일한 데이터 유형의 요소 모음입니다.
  • for (int i = 0; i < numbers.length; i++): for 루프입니다. 여러 번 코드 블록을 반복할 수 있게 해주는 제어 구조입니다.
    • int i = 0: 카운터 변수 i를 0 으로 초기화합니다.
    • i < numbers.length: 각 반복 전에 확인되는 조건입니다. inumbers 배열의 길이보다 작은 동안 루프가 계속됩니다. numbers.length는 배열의 요소 수를 제공합니다.
    • i++: 각 반복 후 카운터 i를 1 씩 증가시킵니다.
  • int currentNumber = numbers[i];: 루프 내에서 이 줄은 numbers 배열에서 현재 인덱스 i의 요소에 접근하여 currentNumber라는 변수에 저장합니다. 배열 인덱스는 0 부터 시작합니다.
  • if (currentNumber > 0): if 문입니다. currentNumber가 0 보다 큰지 확인합니다.
  • System.out.println(currentNumber + " is a positive number.");: if 조건이 true(즉, 숫자가 양수임) 인 경우에만 이 줄이 실행됩니다. 양수 다음에 텍스트 " is a positive number."를 출력합니다.

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

이제 터미널에서 이 프로그램을 컴파일하고 실행해 보겠습니다. ~/project 디렉토리에 있는지 확인하십시오.

코드를 컴파일합니다.

javac PositiveCheck.java

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

이제 컴파일된 코드를 실행합니다.

java PositiveCheck

배열에서 양수만 표시하는 출력을 볼 수 있습니다.

10 is a positive number.
20 is a positive number.
15 is a positive number.

이는 for 루프를 사용하여 배열을 반복하고 각 요소에 조건을 적용하는 방법을 보여줍니다. 다음 단계에서는 Java 의 Stream API 를 사용하여 유사한 결과를 얻는 더 현대적인 방법을 탐구할 것입니다.

Stream API 를 사용하여 양수 확인

이 단계에서는 Java 에서 컬렉션을 처리하는 더 현대적이고 종종 더 간결한 방법인 Stream API 를 탐구할 것입니다. Java 8 에 도입된 Stream 은 데이터 컬렉션에 대한 필터링, 매핑 및 축소와 같은 작업을 수행하는 강력한 방법을 제공합니다.

이전 예제를 수정하여 Stream 을 사용하여 배열에서 양수를 찾을 것입니다.

편집기에서 PositiveCheck.java 파일을 다시 엽니다. 기존 코드를 다음으로 바꿉니다.

import java.util.Arrays;

public class PositiveCheck {

    public static void main(String[] args) {
        // Define an array of integers
        int[] numbers = {10, -5, 20, 0, 15, -8};

        // Use Stream API to filter and print positive numbers
        Arrays.stream(numbers) // 1. Create a stream from the array
              .filter(number -> number > 0) // 2. Filter for positive numbers
              .forEach(number -> System.out.println(number + " is a positive number (Stream).")); // 3. Process each positive number
    }
}

이 코드의 새로운 부분을 살펴보겠습니다.

  • import java.util.Arrays;: stream() 메서드를 사용하려면 Arrays 클래스를 가져와야 합니다.
  • Arrays.stream(numbers): 이 줄은 int 배열을 IntStream으로 변환합니다. 스트림은 자체 데이터 구조가 아니라 처리할 수 있는 요소 시퀀스입니다.
  • .filter(number -> number > 0): 이는 스트림에 대한 중간 연산입니다. filter() 메서드는 Predicate(true 또는 false 를 반환하는 함수) 를 사용하고 술어가 true 인 요소만 유지합니다. 여기서 number -> number > 0은 함수를 작성하는 간결한 방법인 람다 표현식입니다. 스트림의 각 number가 0 보다 큰지 확인합니다.
  • .forEach(number -> System.out.println(number + " is a positive number (Stream)."));: 이는 터미널 연산입니다. 터미널 연산은 스트림을 소비하고 결과를 생성합니다. forEach() 메서드는 스트림의 각 요소에 대해 작업을 수행합니다. 여기서는 각 양수를 메시지와 함께 출력합니다.

PositiveCheck.java 파일을 저장합니다.

이제 터미널에서 수정된 프로그램을 컴파일하고 실행합니다.

javac PositiveCheck.java
java PositiveCheck

이전과 동일한 출력이 표시되지만 업데이트된 메시지가 표시됩니다.

10 is a positive number (Stream).
20 is a positive number (Stream).
15 is a positive number (Stream).

이는 Stream API 가 기존 for 루프와 동일한 결과를 얻는 데 어떻게 사용될 수 있는지 보여주며, 특히 더 복잡한 작업의 경우 더 읽기 쉽고 표현력이 풍부한 코드를 제공합니다.

0 과 음수 처리

이전 단계에서는 양수를 식별하는 데 집중했습니다. 이제 프로그램을 확장하여 0 과 음수도 식별해 보겠습니다. 이렇게 하면 배열의 숫자에 대한 더 완전한 그림을 얻을 수 있습니다.

if-else if-else 문을 사용하여 조건부 논리를 이해하기가 더 쉬우므로, 먼저 기존의 for 루프 접근 방식을 사용하여 0 과 음수를 확인하도록 PositiveCheck.java 파일을 다시 수정합니다.

편집기에서 PositiveCheck.java 파일을 엽니다. 기존 코드를 다음으로 바꿉니다.

public class PositiveCheck {

    public static void main(String[] args) {
        // Define an array of integers
        int[] numbers = {10, -5, 20, 0, 15, -8};

        // Loop through the array
        for (int i = 0; i < numbers.length; i++) {
            // Get the current number
            int currentNumber = numbers[i];

            // Check if the number is positive, negative, or zero
            if (currentNumber > 0) {
                System.out.println(currentNumber + " is a positive number.");
            } else if (currentNumber < 0) {
                System.out.println(currentNumber + " is a negative number.");
            } else {
                System.out.println(currentNumber + " is zero.");
            }
        }
    }
}

다음은 새로운 내용입니다.

  • else if (currentNumber < 0): 이는 else if 문입니다. 이전 if 조건 (currentNumber > 0) 이 false 인 경우에만 currentNumber가 0 보다 작은지 확인합니다.
  • else: 이는 else 문입니다. 선행 if 또는 else if 조건이 모두 true 가 아닌 경우 else 블록 내부의 코드가 실행됩니다. 이 경우 숫자가 0 보다 크지 않고 0 보다 작지 않으면 0 이어야 합니다.

PositiveCheck.java 파일을 저장합니다.

이제 터미널에서 수정된 프로그램을 컴파일하고 실행합니다.

javac PositiveCheck.java
java PositiveCheck

이제 배열의 각 숫자를 분류하는 출력을 볼 수 있습니다.

10 is a positive number.
-5 is a negative number.
20 is a positive number.
0 is zero.
15 is a positive number.
-8 is a negative number.

이는 if-else if-else 문을 사용하여 루프 내에서 여러 조건을 처리하는 방법을 보여줍니다. 이는 프로그래밍에서 의사 결정을 위한 기본적인 패턴입니다.

partitioningBy 또는 여러 filter 연산과 같은 고급 기술을 사용하여 Stream API 를 사용하여 유사한 결과를 얻을 수도 있지만, if-else if-else를 사용한 for 루프는 특히 초보자에게 이 특정 작업에 대한 명확하고 간단한 접근 방식입니다.

요약

이 Lab 에서는 Java 에서 배열에 양수만 포함되어 있는지 확인하는 방법을 배웠습니다. for 루프를 사용하여 배열을 반복하는 방법과 Java Stream API 를 활용하는 두 가지 주요 방법을 살펴보았습니다.

먼저 Java 클래스를 만들고 for 루프를 사용하여 정수 배열의 각 요소를 검사하는 것으로 시작했습니다. 조건 검사 (if (currentNumber > 0)) 를 구현하여 양수를 식별하고 출력했습니다. 이 기본적인 접근 방식은 배열 내에서 개별 요소에 액세스하고 처리하는 방법을 보여주었습니다. 제공된 내용은 루프 방식만 자세히 설명했지만, Lab 의 구조는 후속 단계에서 Stream API 와 0/음수 처리를 다루어 이 일반적인 프로그래밍 작업에 대한 다양한 기술에 대한 포괄적인 이해를 제공할 것임을 나타냅니다.