public static void updateRoundScoreBySubject() {
String studentId = getInputStudentId();
//for문 학생숫자*50회 돌아감
for (int i = 0; i < CampManagementApp.scoreStore.size(); i++) {
Score bigScore = CampManagementApp.scoreStore.get(i);
//studentId 일치하는 학생 찾음 (50 개)
if (bigScore.getStudentId().equals(studentId)) {
String subjectId = getInputSubjectId();
//그중에 입력한 과목 id가 있는지 확인 없으면 안듣는거
//듣는다면 회차수 10개 만큼 나옴
if (bigScore.getSubjectId().equals(subjectId)) {
System.out.println("회차입력");
Scanner sc2 = new Scanner(System.in);
int round = sc2.nextInt();
//과목 타입 체크!
String subjectType = "";
for (int j = 0; j < CampManagementApp.subjectStore.size(); j++) {
Subject check = CampManagementApp.subjectStore.get(i);
if (check.getSubjectId().equals(subjectId)) {
subjectType = check.getSubjectType();
break;
}
}
//10개중 해당 회차를 찾아서 들어가기
if (bigScore.getRound() == round) {
System.out.println("(점수, 등급)은 (" + bigScore.getScore() + ", " + bigScore.getGrade() + ")입니다.");
System.out.println("");
System.out.println("몇 점으로 수정하시겠습니까?");
Scanner sc3 = new Scanner(System.in);
int newScore = sc2.nextInt();
//0<=점수<=100 인지 확인
if (0 <= newScore && newScore <= 100) {
bigScore.setScore(newScore);
if (subjectType.equals("필수")) {
if (95 <= newScore) {
bigScore.setGrade("A");
System.out.println(newScore + " / " + subjectType + " / " + bigScore.getGrade() + " 로 변경되었습니다. ");
} else if (90 <= newScore) {
bigScore.setGrade("B");
System.out.println(newScore + " / " + subjectType + " / " + bigScore.getGrade() + " 로 변경되었습니다. ");
} else if (80 <= newScore) {
bigScore.setGrade("C");
System.out.println(newScore + " / " + subjectType + " / " + bigScore.getGrade() + " 로 변경되었습니다. ");
} else if (70 <= newScore) {
bigScore.setGrade("D");
System.out.println(newScore + " / " + subjectType + " / " + bigScore.getGrade() + " 로 변경되었습니다. ");
} else if (60 <= newScore) {
bigScore.setGrade("E");
System.out.println(newScore + " / " + subjectType + " / " + bigScore.getGrade() + " 로 변경되었습니다. ");
} else {
bigScore.setGrade("F");
System.out.println(newScore + " / " + subjectType + " / " + bigScore.getGrade() + " 로 변경되었습니다. ");
}
} else if (subjectType.equals("선택")) {
if (90 <= newScore) {
bigScore.setGrade("A");
System.out.println(newScore + " / " + subjectType + " / " + bigScore.getGrade() + " 로 변경되었습니다. ");
} else if (80 <= newScore) {
bigScore.setGrade("B");
System.out.println(newScore + " / " + subjectType + " / " + bigScore.getGrade() + " 로 변경되었습니다. ");
} else if (70 <= newScore) {
bigScore.setGrade("V");
System.out.println(newScore + " / " + subjectType + " / " + bigScore.getGrade() + " 로 변경되었습니다. ");
} else if (60 <= newScore) {
bigScore.setGrade("D");
System.out.println(newScore + " / " + subjectType + " / " + bigScore.getGrade() + " 로 변경되었습니다. ");
} else if (50 <= newScore) {
bigScore.setGrade("E");
System.out.println(newScore + " / " + subjectType + " / " + bigScore.getGrade() + " 로 변경되었습니다. ");
} else {
bigScore.setGrade("F");
System.out.println(newScore + " / " + subjectType + " / " + bigScore.getGrade() + " 로 변경되었습니다. ");
}
}
} else {
System.out.println("점수값을 0~100사이로 입력하세요");
}
} else {
System.out.println("해당 회차가 없습니다.");
}
} else {
System.out.println("과목ID에 해당하는 과목이 없습니다.");
}
} else {
System.out.println("학생Id에 해당하는 정보가 없습니다.");
}
}
}
@@@@전체적으로 for문으로 덮어놔서 원하는 값이 나올때까지 계속 에러처리가 난다.
단계를 한계씩 잘라서 오류처리를 하나씩 해주었다.
오류가났을때 바로 돌아갈 수 있다.
public static void updateRoundScoreBySubject() {
String studentId = getInputStudentId();
if (getStudentScores(studentId).isEmpty()) {
System.out.println("점수가 없는 학생입니다.");
return;
}
String subName = getInputSubjectname();
if (!isSubjectList(studentId, subName)) {
System.out.println("해당 과목을 수강하지않습니다.");
return;
}
String subjectId = getSubjectId(subName);
while(true) {
System.out.println("회차입력");
Scanner sc = new Scanner(System.in);
int round = sc.nextInt();
Score bigScore = null;
for (int i = 0; i < scores.size(); i++) {
if (scores.get(i).getStudentId().equals(studentId) && scores.get(i).getSubjectId().equals(subjectId) && scores.get(i).getRound() == round) {
bigScore = getThatScore(studentId, subjectId, round);
break;
}
if (i + 1 == scores.size() && bigScore == null) {
System.out.println("해당 회차에 대한 정보가 없습니다.");
}
}
if(bigScore == null) {
continue;
}
System.out.println("점수 : " + bigScore.getScore() + " 등급 : " + bigScore.getGrade() + " 입니다.\n");
System.out.println("몇 점으로 수정하시겠습니까? ");
int newScore = sc.nextInt();
if (newScore > 100 || newScore < 0) {
System.out.println("0~100점 사이로 입력하세요");
return;
}
System.out.println("과목의 타입을 입력하세요(MANDATORY or CHOICE)");
String type = sc.next();
if (!checkType(type)) {
System.out.println("과목의 타입을 제대로 입력하세요");
return;
}
bigScore.setScore(newScore);
bigScore.setGrade(returnGrade(type, newScore));
System.out.println("점수 : " + bigScore.getScore() + " 등급 : " + bigScore.getGrade() + " 입니다.");
return;
}
}
'프로젝트' 카테고리의 다른 글
팀프로젝트 Try 해볼것!(트러블슈팅, 플로우차트) (0) | 2024.08.08 |
---|---|
수강생의 과목별 회차 점수 수정.(final) (0) | 2024.08.07 |
수강생의 과목별 회차 점수 수정 pt3. (예외 잡기) (0) | 2024.08.06 |
수강생의 과목별 회차 점수 수정. (0) | 2024.08.02 |
계산기 (0) | 2024.07.30 |