이 글에서는 자바(Java)에서 배열에 특정 값이 포함되어 있는지 확인하는 방법을 살펴봅니다. 가장 기본적인 방식은 배열의 각 요소를 반복하면서 찾고자 하는 입력값과 하나씩 비교하는 것입니다.
아래는 그 동작 방식을 보여주는 예시입니다.
입력
검색할 숫자: 25 정수 배열의 요소: 15 20 25 30 35
출력
배열에 해당 값이 포함되어 있습니다
알고리즘
- 시작합니다.
- 정수형 변수 my_input, i, array_size를 선언하고, 불리언 변수 my_check와 정수 배열 my_array를 정의합니다.
- 사용자로부터 필요한 값을 입력받거나 값을 직접 정의합니다.
- for 루프를 사용해 배열 요소를 순회하면서 입력값과 배열의 각 값을 비교합니다.
- 값이 일치하면 해당 요소가 배열에 존재하는 것이고, 끝까지 일치하는 값이 없다면 존재하지 않는 것입니다.
- 결과를 출력합니다.
- 종료합니다.
예제 1: 사용자로부터 입력받는 경우
이 예제에서는 Scanner 클래스를 사용해 검색할 숫자, 배열의 크기, 배열의 요소를 차례로 입력받은 뒤, for 루프로 값의 포함 여부를 확인합니다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int my_input, i, array_size;
boolean my_check = false;
System.out.println("필요한 패키지를 임포트했습니다");
Scanner my_scanner = new Scanner(System.in);
System.out.println("Scanner 객체가 생성되었습니다");
System.out.println("검색할 숫자를 입력하세요");
my_input = my_scanner.nextInt();
System.out.print("배열의 크기를 입력하세요: ");
array_size = my_scanner.nextInt();
int my_array[] = new int[array_size];
System.out.println("배열의 요소를 입력하세요:");
for (i = 0; i < array_size; i++) {
my_array[i] = my_scanner.nextInt();
}
for (i = 0; i < array_size; i++) {
if (my_array[i] == my_input) {
my_check = true;
break;
}
}
if (my_check)
System.out.println("\n배열에 해당 값이 포함되어 있습니다");
else
System.out.println("\n배열에 해당 값이 포함되어 있지 않습니다");
}
}
실행 결과
필요한 패키지를 임포트했습니다 Scanner 객체가 생성되었습니다 검색할 숫자를 입력하세요 25 배열의 크기를 입력하세요: 5 배열의 요소를 입력하세요: 10 15 20 25 30 배열에 해당 값이 포함되어 있습니다
예제 2: 값이 미리 정의된 경우
이 예제에서는 검색할 숫자와 배열이 코드 안에서 미리 정의되어 있으며, 이를 콘솔에 출력한 후 포함 여부를 확인합니다.
public class Main {
public static void main(String[] args) {
int[] my_array = {15, 20, 25, 30, 35, 40};
int my_input, i, array_size;
array_size = 6;
my_input = 25;
boolean my_check = false;
System.out.println("검색할 숫자: " + my_input);
System.out.println("정수 배열의 요소:");
for (i = 0; i < array_size; i++) {
System.out.print(my_array[i] + " ");
}
for (i = 0; i < array_size; i++) {
if (my_array[i] == my_input) {
my_check = true;
break;
}
}
if (my_check)
System.out.println("\n배열에 해당 값이 포함되어 있습니다");
else
System.out.println("\n배열에 해당 값이 포함되어 있지 않습니다");
}
}
실행 결과
검색할 숫자: 25 정수 배열의 요소: 15 20 25 30 35 40 배열에 해당 값이 포함되어 있습니다
더 간단한 대안: Arrays.asList()와 스트림 API
반복문을 직접 작성하는 대신 자바 표준 API를 활용하면 코드를 훨씬 간결하게 만들 수 있습니다.
Arrays.asList() 사용 (객체 배열)
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
Integer[] my_array = {15, 20, 25, 30, 35};
boolean result = Arrays.asList(my_array).contains(25);
System.out.println("배열에 해당 값이 포함되어 있습니까? " + result);
}
}
단, Arrays.asList()는 int와 같은 기본형(primitive) 배열에는 적용할 수 없으므로 Integer 같은 래퍼 클래스 배열을 사용해야 합니다.
스트림(Stream) API 사용 (기본형 배열)
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
int[] my_array = {15, 20, 25, 30, 35};
boolean result = IntStream.of(my_array).anyMatch(x -> x == 25);
System.out.println("배열에 해당 값이 포함되어 있습니까? " + result);
}
}
학습 목적이라면 for 루프를 이용한 기본 구현부터 익혀두는 것이 좋고, 실무에서는 Arrays.asList()나 스트림 API처럼 간결한 방식을 활용하는 편이 효율적입니다.