-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
구구단 추가미션 요구사항 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
나르비
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 로 변경
감사합니다.
답변 1