반응형
스캐너, 2차원 배열 활용한 학생 5명의 성적 출력 프로그램 구현하기
<조건>
- 학생은 5명이다. 5명을 넘어가면 "더 이상 입력할 수 없습니다." 메세지 출력
- 학생 번호는 1~5번 사이이다.
- 과목은 국어, 영어, 수학 총 3과목이 있다.
- 1.입력 2.출력 3.종료 옵션이 있고 입력 전에 2번을 누르면 "아직 입력된 정보가 없습니다." 메세지 출력
구현 코드
1. 조건을 충족하기 위한 상수 구현
2. 각각 필요한 배열 생성
3. [1. 입력 2. 출력 3. 종료] 전체 조건문 형식은 이렇게 된다.
Scanner scan = new Scanner(System.in);
if(userChoice ==1){
}else if(userChoice == 2){
}else if(user Choice == 3){
System.Out.println("사용해 주셔서 감사합니다.");
break; //프로그램 종료
}
scan.close(); //스캐너 종료
4. 전체 코드
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
import java.util.Scanner;
public class GradeSystem {
static final int STUDENT_SIZE = 5;
static final int SUBJECT_SIZE = 3;
// 학생 번호는 1~5 사이이다.
static final int ID_MIN = 1;
static final int ID_MAX = 5;
static final int SCORE_MIN = 0;
static final int SCORE_MAX = 100;
static final int POS_KOREAN = 0;
static final int POS_ENGLISH = 1;
static final int POS_MATH = 2;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// 번호용 배열
int[] idArray = new int[STUDENT_SIZE];
// 이름용 배열
String[] nameArray = new String[STUDENT_SIZE];
// 점수용 배열
int[][] scoreArray = new int[STUDENT_SIZE][SUBJECT_SIZE];
// 각 배열에 입력할 인덱스
int idx = 0;
while (true) {
System.out.println("1.입력 2.출력 3.종료");
System.out.print(">");
int userChoice = scan.nextInt();
if (userChoice == 1) {
if (idx < STUDENT_SIZE) {
int tempInput = 0;
System.out.println("번호:");
tempInput = scan.nextInt();
while (!(tempInput >= ID_MIN && tempInput <= ID_MAX)) {
System.out.println("잘못 입력하셨습니다.");
System.out.print("번호 : ");
tempInput = scan.nextInt();
}
idArray[idx] = tempInput;
// scan.nextLine();
System.out.print("이름:");
scan.nextLine();
nameArray[idx] = scan.nextLine();
// 국어 점수
System.out.print("국어:");
tempInput = scan.nextInt();
while (!(tempInput >= SCORE_MIN && tempInput <= SCORE_MAX)) {
System.out.println("잘못 입력하셨습니다.");
System.out.print("국어:");
tempInput = scan.nextInt();
}
scoreArray[idx][POS_KOREAN] = tempInput;
// 영어 점수
System.out.print("영어:");
tempInput = scan.nextInt();
while (!(tempInput >= SCORE_MIN && tempInput <= SCORE_MAX)) {
System.out.println("잘못 입력하셨습니다.");
System.out.print("영어:");
tempInput = scan.nextInt();
}
scoreArray[idx][POS_ENGLISH] = tempInput;
// 수학 점수
System.out.print("수학:");
tempInput = scan.nextInt();
while (!(tempInput >= SCORE_MIN && tempInput <= SCORE_MAX)) {
System.out.println("잘못 입력하셨습니다.");
System.out.print("수학:");
tempInput = scan.nextInt();
}
scoreArray[idx][POS_MATH] = tempInput;
idx++;
} else {
System.out.println("더이상 입력하실 수 없습니다.");
}
} else if (userChoice == 2) {
if (idx==0) {
System.out.println("아직 입력된 정보가 없습니다.");
} else {
System.out.println("-----------------");
for(int i=0;i<idx;i++) {
int id = idArray[i];
String name = nameArray[i];
int kor = scoreArray[i][POS_KOREAN];
int eng = scoreArray[i][POS_ENGLISH];
int math = scoreArray[i][POS_MATH];
int sum = eng + kor + math;
double avg = (double) sum / SUBJECT_SIZE;
System.out.println("----" + (i+1) + "번 학생의 정보----");
System.out.printf("번호: %03d번 이름:%s\n", id, name);
System.out.printf("국어: %03d점 영어: %03d점 수학: %03d점\n", kor, eng, math);
System.out.printf("총점: %03d점 평균:%06.2f점\n", sum, avg);
}
System.out.println("-----------------");
System.out.println();
}
} else if (userChoice == 3) {
System.out.println("사용해주셔서 감사합니다.");
break;
}
}
scan.close();
}
}
|
cs |
5. 출력 화면
반응형
'📒 education archive > 🎀JAVA' 카테고리의 다른 글
자바 공부 기록(16)-HashSet 예제 , 잘 섞이지 않는 배열 ArrayList에 옮겨 담기 (0) | 2021.11.16 |
---|---|
자바 공부 기록(15)-Comparator 와 Comparable, 예제 (0) | 2021.11.15 |
[국비학원 기록/자바] 연결 리스트(Linked List) 종류, 구현, 노드 중간 데이터 추가 (0) | 2021.11.07 |
[국비학원 기록/자바] 스레드02. 제어 메서드, join(),interrupt(),wait(),notify(),notifyAll() (0) | 2021.10.31 |
[국비학원 기록/자바] 쓰레드01. 프로세스, 스레드(Thread)장점, 단점,우선순위 (0) | 2021.10.31 |