Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 데이터를 못 읽어오는 경우
- 게시판
- 국비과정
- 간단한 CRUD 구현
- 웹 크롤러
- Oracle 유동IP
- mariadb 접속오류
- 국비지원 후기
- 취업 후기
- 팝업 생성
- CRUD 구현
- 간단한 CRUD구현
- 국비 회고
- 국비
- crud게시판
- 유동아이피를 고정하는 방법
- 간단한 CRUD 게시판
- 파이널 프로젝트
- 회고록
- 국비 과정
- 회고
- jQuery
- 아날로그 시계만들기
- CRUD 게시판
- Oracle 유동아이피
- mariadb 서버 기본값 설정
- 잡다한 노트
- 생년월일 팝업 생성
- jsp
- 국비지원
Archives
- Today
- Total
우당탕탕 개발 블로그 도전기
[JAVA] 시험 결과를 출력하고, 점수에 따라 등수를 차등으로 출력하는 문제 본문
해당 문제에 대한 출력 예시)
====================================
번호 이름 1 2 3 4 5 점수 등수
------------------------------------
1 홍길동 O X O O O 80 2
2 무궁화 O O O O O 100 1
3 라일락 X X X X O 20 5
4 진달래 X O X O O 60 3
5 봉선화 O O X X X 40 4
------------------------------------
- 맞은문제 O, 틀린문제 X표시
- 점수: O당 20점씩
- 등수: 점수를 기준으로 높은사람이 1등
문제) 출력 결과에 해당하는 각각의 5명에 대한 성적을 구하고 점수별로 등수를 메긴다.
//Jumsu의 객체 배열 student를 생성하고 초기화한다.
//Jumsu 객체는 학생의 번호, 이름, 그리고 5개 문제에 대한 답안을 포함함
Jumsu[] student = {
new Jumsu(1,"홍길동", 3,4,3,3,3),
new Jumsu(2,"무궁화", 3,3,3,3,3),
new Jumsu(3,"라일락", 1,2,4,4,3),
new Jumsu(4,"진달래", 2,3,1,3,3),
new Jumsu(5,"봉선화", 3,3,4,1,1)
};
//학생 수를 계산 : student 배열의 길이를 size 변수에 저장함(학생 수를 나타냄)
int size = student.length;
// 점수 계산 : 모든 학생의 compute() 메서드를 순회하며 호출하여, 각 학생의 점수를 계산함
// 학생의 답안과 정답을 비교하여 점수를 계산하고, 'O'와 'X'를 ox 배열에 저장
for (int i = 0; i < size; i++) {
student[i].compute();
}
// 등수 계산 : 각 학생에 대해, 다른 모든 학생의 점수와 비교합니다.
// 만약 다른 학생의 점수가 더 높다면, 현재 학생의 등수를 1 증가시킴
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
if (student[i].score < student[j].score) {
student[i].rank++; // 다른 학생의 점수가 더 높으면 등수를 1 증가
}
}
}
// 결과 출력
System.out.println("** 시험 결과 **");
System.out.println("====================================");
System.out.println("번호 이름 1 2 3 4 5 점수 등수");
System.out.println("------------------------------------");
//각 학생의 disp() 메서드를 호출하여 번호, 이름, 각 문제에 대한 'O'/'X' 표시, 점수, 등수를 출력
for (int i = 0; i < size; i++) {
student[i].disp();
}
System.out.println("------------------------------------");
}
Jumsu를 정의하고 있는 클래스
class Jumsu {
//멤버 변수 field
//Jumsu 클래스를 정의하고 있으며, 학생의 시험 점수를 처리하는 데
//필요한 속성(멤버 변수)과 메서드(멤버 함수)를 포함하고 있음
private int no; //번호
private String name; //이름
private char[] ox = new char[5]; //OX표시
private int[] answer = new int[5];//답안지 제출
public int score; //점수
public int rank; //등수
//생성자 함수 constructor
public Jumsu() {//기본 생성자(default), 초기에는 아무런 동작도 하지 않음
}
//오버로딩된 생성자, 학생의 번호, 이름, 그리고 5개의 문제에 대한 답안을 초기화한다.
//모든 학생의 초기 등수는 1로 설정
public Jumsu(int no, String name, int a0, int a1, int a2, int a3, int a4) {
this.no = no;
this.name = name;
//각 5개 문제에 대한 답안을 초기화함.
this.answer[0] = a0;
this.answer[1] = a1;
this.answer[2] = a2;
this.answer[3] = a3;
this.answer[4] = a4;
this.rank = 1; //모든 학생의 초기 등수는 1로 설정
}
//멤버함수 method
//학생의 답안을 정답과 비교하여 'O' 또는 'X'로 ox 배열을 채우고
//맞은 문제의 수를 기반으로 점수를 계산한다. 각 맞은 문제에 20점을 부여함
public void compute() {
int[] dap = {3,3,3,3,3}; //정답
int correctCount = 0; //맞은 수
// 정답과 학생의 답안 비교
for (int i = 0; i < dap.length; i++) {
if (answer[i] == dap[i]) { //answer[i] == dap[i]의 값이 일치한다면
ox[i] = 'O'; //ox[i]에 O를 대입
correctCount++;//O가 대입되면 correnctCount의 값을 1씩 증가시킴
} else {
ox[i] = 'X'; //아닐경우는 X를 대입함
}
score = correctCount * 20; //증가한 correctCount 값 * 20을 score(점수) 변수에 저장
}
}
//학생의 번호, 이름, 각 문제의 'O'/'X' 표시, 점수, 등수를 출력
public void disp() {
System.out.print(no+" "); //학생의 번호
System.out.print(name+" ");//학생의 이름
//for (char c : ox) { ... }: 이 구문은 ox 배열의 시작부터 끝까지 각 요소를 순회함
for(char c : ox) {
System.out.print(c + " ");//순회중인 char값인 c를 출력하고 뒤에 공백을 추가
}
System.out.print(score+" ");
System.out.print(rank+" ");
System.out.println();
}
}
'Java' 카테고리의 다른 글
[Java] 상속과 Override (1) | 2024.03.23 |
---|---|
[Java] 생성자 함수와 'this' (1) | 2024.03.23 |
[JAVA] Charater Class, Integer 클래스를 이용해 주민 번호의 합을 구하는 문제 (0) | 2024.03.21 |
[JAVA] Charater Class를 이용해서 대소문자를 바꿔서 출력하기 (0) | 2024.03.21 |
[Java] String Class에서 특정한 문자열을 기준으로 분리하기 (0) | 2024.03.20 |