자바 소소한 코딩 질문 [ 배열]
조회수 541회
package javaprac;
import java.util.*;
public class hello {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int num;
double avg = 0;
System.out.println("학생수를 입력하시오");
num = scan.nextInt();
int score[] = {0};
for (int i = 0; i < num; i++) {
System.out.println("학생" + (i + 1) + "의 성적을 입력하세요");
score[i] = scan.nextInt();
if (score[i] > 100) {
System.out.println("다시 입력하시오.");
}else {
avg = avg + score[i];
}
}
System.out.println("성적평균은: " + avg / num);
}
}
코딩 내용은 학생수를 입력받아 학생수만 큼 점수를 입력해서 점수의 평균을 구하는 코딩입니다
학생수를 1명으로 했을떄는 값이 제대로 나오는데 2명 이상일 경우 오류가나오네요 어디가 문제인지 친절히 가르쳐주세요.. 코딩 노베이스라... 죄송합니다.
2 답변
-
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 at javaprac.hello.main(hello.java:19)
상기의 예외 메세지는 배열의 길이가 잘못되어 유효하지 않은 범위를 선택했을때 발생합니다.
jshell> int score[] = {0}; score ==> int[1] { 0 }
코드를 보면 1개짜리 배열을 선언했습니다. 그런 관계로 1명 했을때는 정상적으로 배열에 저장이 될 수 있지만 2명째에는 오류가 발생하게 됩니다.
배열을 늘리던지 배열대신 ArrayList 를 사용하세요.
-
System.out.println("학생수를 입력하시오"); num = scan.nextInt();
여기서 학생수를 num 변수에 받았으니, 이 값을 사용해서 score 배열 크기를 할당하면 됩니다.
//int score[] = {0}; int score[] = new int[num]
이렇게 수정하면 되겠습니다.
댓글 입력