• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

구구단 추가미션 요구사항 1 문의합니다

22.03.31 23:41 작성 조회수 211

0

최종 요구사항1에서 부터 막혔습니다. ㅠ
2단부터 9단까지 만들어보고(주석처리 된부분) 아래 메서드를 작성했는데 만약 제가 5를 입력하면
2*1 단부터 4*4단까지만 출력됩니다.
 
if문의 조건식 쓰는 쪽에 i와 j를 <= x 로 표시하면 자꾸 에러가 뜨는데 이유가 뭔지 모르겠습니다.
제가 어떤부분에서 잘못생각하고 있는건가요??
 
 
<pre class="language-java"><code>
class Gugudan {
	public static void main(String[] args) {

//		int i, j;
//		int arr[][] = new int[10][10];
//		for (i = 2; i <= 9; i++){
//			for (j = 1; j <= 9; j++){
//				arr[i][j] = i * j;
//				System.out.print(arr[i][j]);
//			}
//			System.out.println();
//		}

		Scanner scanner = new Scanner(System.in);
		System.out.println("숫자를 입력하세요.");
		int input = scanner.nextInt();
		
		int[][] result = cal(input);
	}

	//method로 만들기
	public static int[][] cal (int x){
		int[][] result = new int[x][x];

		for (int i = 2; i < x; i++) {
			for (int j = 1; j < x; j++) {
				result[i][j] = i * j;
				System.out.println(result[i][j]);
			}
			System.out.println();
		}//for문종료
		return result;
	}
	
}
</code></pre>

답변 1

답변을 작성해보세요.

1

나르비님의 프로필

나르비

2022.04.01

안녕하세요 

아마도 출력되는 오류는 ArrayIndexOutOfBoundsException 로 생각됩니다.

배열에 저장할 수 있는 범위를 초과하였을 때 발생하는 오류죠. 

 

위의 경우에는 배열을 생성해주실 때 

int arr[][] = new int[10][10];

위와 같이 int[10][10]으로 생성해주셨기 때문에 문제가 없습니다. 

이 배열의 경우 [0][0]~ [9][9] 까지 총 81개의 int 변수를 저장할 수 있기에 구구단을 모두 담기에 문제가 없습니다. 

 

하지만 아래에 작성해주신 코드의 경우 

int[][] result = new int[x][x];

위와 동일하게 저장하기 위해서는 한칸이 더 필요합니다. 

int[][] result = new int[x+1][x+1];

// 이후 i <= x , j<= x 로 변경

 

감사합니다.