code.falcone
10
2021-04-08 10:43:38
2
115

코린이 자바 질문 ㅜㅜ


문제 : n개의 양의 정수 입력받아 배열에 저장하고, 삽입위치(k) 와 삽입 값을 입력하면 

기존배열에 요소를 삽입하는 프로그램 만들기.

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {	
		
		Scanner sc = new Scanner(System.in);
		
		
		int n = sc.nextInt();
		int arr[] = new int[n];
		
		System.out.println("n개의 양의 정수 입력 : > ");
		
		for(int i=0; i<n; i++) { 
			arr[i] = sc.nextInt();
		}
		
		int size = n;
		int k = sc.nextInt();
		for(int i = size; i>k; i--) { 
			arr[i] = arr[i-1];
	
		}
		arr[k] = sc.nextInt();
		size++;
		
		for (int i =0; i<size; i++) { 
			System.out.print(arr[i] + " ");
		}
		sc.close();
		

2시간 넘게 매달렸는데 오류를 못찾겠습니다 ... 도와주세요 ㅜㅜ 

0
  • 답변 2

  • 오로롱이
    1k
    2021-04-08 11:40:56 작성 2021-04-08 11:54:34 수정됨

    1. 삽입 위치 k를 입력 할 때 n보다 크거나 같은 수를 입력하면 arr 배열 index 초과로 오류가 납니다

    2. n은 length 값인데 index로 i = size부터 loop 출발 하셔서 오류가 납니다

    3. 그리고 size++;했는데 arr 배열 개수는 그대로인 상태에서 for (int i =0; i<size; i++) 이렇게 loop돌면서 배열의 값을 가져오려고 해서 오류가 납니다. 

    테스트 케이스를 작성해 보시는 것이 좋을 듯 합니다.

    무조건 예제를 따라 하는 것 보다 순서도를 그리면서 테스트 케이스를 반복해서 이해하는 것이 더 좋을 수 있습니다.

  • code.falcone
    10
    2021-04-10 14:44:14

    감사합니다!! 덕분에 해결했어요!!

    테스트 케이스 반복해서 이해하는게 도움이 확실히 되네요

  • 로그인을 하시면 답변을 등록할 수 있습니다.