import java.util.Scanner;
public class StudentCards_Array {
public static void main(String[] args) {
int total;
int[] subjectA = new int[5];
double average;
char grade;
boolean keepGoing;
Scanner stMark = new Scanner(System.in);
do {
System.out.println("국어 점수를 입력해 주세요");
subjectA[0]=stMark.nextInt();
//변수로 정수값을 받아오는 대신에 받아온 정수값을 준비해놓은 int형의 배열에 저장하는 소스로 변경
System.out.println("영어 점수를 입력해 주세요");
subjectA[1]=stMark.nextInt();
System.out.println("수학 점수를 입력해 주세요");
subjectA[2]=stMark.nextInt();
System.out.println("과학 점수를 입력해 주세요");
subjectA[3]=stMark.nextInt();
System.out.println("역사 점수를 입력해 주세요");
subjectA[4]=stMark.nextInt();
total =subjectA[0]+ subjectA[1] + subjectA[2] + subjectA[3] + subjectA[4];
//배열 방 다 더하고
average = total/5;
//평균값
if (average >= 90) grade = 'A';
else if(average >= 80) grade = 'B';
else if(average >= 70) grade = 'C';
else if(average >= 60) grade = 'D';
else grade = 'F';
System.out.println("평균 : "+average);
System.out.println("등급 : "+grade);
System.out.println("다음 학생이 있습니까?(true or false)");
keepGoing = stMark.nextBoolean();
} while(keepGoing);
stMark.close();
}
}
=================출력문========================
국어,영어,수학,과학,역사 점수를 입력해 주세요
100
평균 : 100.0
등급 : A
다음 학생이 있습니까?(true or false)
true
국어,영어,수학,과학,역사 점수를 입력해 주세요
평균 : 0.0
등급 : F
다음 학생이 있습니까?(true or false)
=============================================
true를 입력하면 다음 입력이 불가능한 버그가 발생합니다.
어떻게 해결해야 할까요??
goodlife1359님의 답변
## 두번째 학생 성적 값을 입력받고 난 후
keepgoing이 false가 되어서 while 문이 실행이 되지 않는것 같습니다.
학생 성적 값을 입력받고난후에 sysout으로 keepgoing 변수 값을 확인해보세요
참고로 이런 상황에서는 do-while 보다 while을 사용해서 학생 성적을 계속 입력받을수 있게 하고
false 즉 더이상 입력받지 않는 상태가 되었을때
while문을 빠져나가게 하는것이 더 문제를 쉽게 해결할수 있는 방법인것 같습니다.
## 실행코드
```
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int total;
int[] subjectA = new int[5];
double average;
char grade;
boolean keepGoing = true;
Scanner stMark = new Scanner(System.in);
while (keepGoing) {
System.out.println("국어: ");
subjectA[0] = stMark.nextInt();
System.out.println("영어: ");
subjectA[1] = stMark.nextInt();
System.out.println("수학: ");
subjectA[2] = stMark.nextInt();
System.out.println("사회: ");
subjectA[3] = stMark.nextInt();
System.out.println("과하: ");
subjectA[4] = stMark.nextInt();
total = subjectA[0] + subjectA[1] + subjectA[2] + subjectA[3] + subjectA[4];
System.out.println("총점: " + total);
average = total / 5.0;
System.out.println("평균: " + average);
if (average >= 90)
grade = 'A';
else if (average >= 80)
grade = 'B';
else if (average >= 70)
grade = 'C';
else if (average >= 60)
grade = 'D';
else
grade = 'F';
System.out.println("grade: " + grade);
System.out.println("계속입력하시겠습니까? (y/n)");
String word = stMark.next();
if (word.equals("y")) {
continue;
} else {
keepGoing = false;
}
}
if (keepGoing == false) {
System.out.println("프로그램 종료");
}
}
}
```