[java] int 배열받기

CHOI HONGSEO·2026년 3월 29일

int[] answer = {}; : 메모리에 answer라는 이름의 이름표는 붙였지만, 실제 데이터를 담을 공간(Index)이 0개가 된다. 이후 answer[0] = ...를 선언해주면 0번째 칸에 값을 넣으려고 시도합니다.

에러 발생 : 크기가 0이라 값을 넣을 수 없어 에러

배열 생성 시: 반드시 new int[크기] 처럼 숫자를 넣어줘야 값을 담을 공간이 생긴다.

반복문 주의: st.countTokens()처럼 값이 변하는 메서드는 변수에 담아서 사용

출력: int[] 객체를 그냥 출력하면 주소값이 나오니, 출력할 때 Arrays.toString()사용

핵심으로 들어가서 int 배열을 받기 위해서는

				BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int count =st.countTokens();
        int[] arr = new int[count];
        for(int i=0; i<count; i++){
            arr[i]=Integer.parseInt(st.nextToken());
        }

위와 같이 StringTokenizer을 사용해서 countTokens로 배열의 공간 확보, string을 받은 뒤 nextToken으로 배열에 넣어주면 된다.

고정된 크기가 없을 때: ArrayList 활용

StringTokenizer st = new StringTokenizer(br.readLine());
ArrayList<Integer> list = new ArrayList<>();
while (st.hasMoreTokens()) {
list.add(Integer.parseInt(st.nextToken()));

입력되는 숫자가 몇 개인지 미리 알 수 없을 때(배열 크기를 정할 수 없을 때) 사용한다

public static int[] solution(int[] num_list, int n) {
        int[] answer = new int[n];
        for(int i=0; i<n; i++){
            answer[i]=num_list[i];
        }
        return answer;
    }

여기서 return answer을 해주면 answer의 주소 반환해준다.

Arrays.toString(result)

그런데 이때, result가 배열 전체를 잘 받았더라도, 그냥 System.out.println(result);라고 하면 우리가 원하는 [1, 2, 3] 같은 모양이 나오지 않는다.

  • 그냥 출력 시: [I@6d06d69c 같은 이상한 메모리 주소값이 나온다.
  • 내용물을 보려면: Arrays.toString(result)를 써야 배열의 값이 다 출력된다.
profile
곧 성공할 개발자입니다.

0개의 댓글