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를 입력하면 다음 입력이 불가능한 버그가 발생합니다. 어떻게 해결해야 할까요??
## 두번째 학생 성적 값을 입력받고 난 후 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("프로그램 종료"); } } } ```