https://www.youtube.com/watch?v=07-GGuIveCg&list=PLq8wAnVUcTFWQ4TpRPZRa5nj1VwfyO7st&index=13
package Exam_1;
public class ExamList {
public int current;
public Exam[] exams;
}
package Exam_1;
public class Exam {
int kor;
int eng;
int math;
}
package Exam_1;
import java.util.Scanner;
public class Exam_1 {
public static void main(String[] args) {
ExamList list = new ExamList();
list.exams = new Exam[3];
list.current = 0;
int menu;
boolean keepLoop = true;
while(keepLoop) {
menu = inputMenu();
switch(menu) {
case 1:
inputList(list);
break;
case 2:
printList(list);
break;
case 3:
System.out.println("bye~");
keepLoop = false;
break;
default:
System.out.println("잘못된 값을 입력하셨습니다.");
}
}
}
private static int inputMenu() {
Scanner scan = new Scanner(System.in);
int num;
System.out.println("--------------------");
System.out.println("메인메뉴");
System.out.println("메뉴를 선택해주세요");
System.out.println("\t1. 성적입력");
System.out.println("\t2. 성적출력");
System.out.println("\t3. 나가기");
System.out.print("\t>>>");
num = scan.nextInt();
if(num<1||3<num) {
System.out.println("1~3의 숫자만 입력해주세요");
}
return num;
}
private static void inputList(ExamList list) {
Scanner scan = new Scanner(System.in);
System.out.println("--------------------");
System.out.println("성적입력");
int kor, eng, math;
do {
System.out.print("국어 : ");
kor = scan.nextInt();
if(kor<0||100<kor) {
System.out.print("국어성적은 0~100까지 범위만 입력해주세요");
}
}while(kor<0||100<kor);
do {
System.out.print("영어 : ");
eng = scan.nextInt();
if(eng<0||100<eng) {
System.out.println("영어성적은 0~100까지 범위만 입력해주세요");
}
}while(eng<0||100<eng);
do {
System.out.print("수학 : ");
math = scan.nextInt();
if(math<0||100<math) {
System.out.println("수학성적은 0~100까지 범위만 입력해주세요");
}
}while(math<0||100<math);
Exam exam = new Exam();
exam.kor = kor;
exam.eng = eng;
exam.math = math;
Exam[] exams = list.exams;
int size = list.current;
if(exams.length == size) {
//1. 크기가 5개정도 더 큰 새로운 배열 생성
Exam[] temp = new Exam[size+5];
//2. 값을 이주시키기
for(int i=0; i<size; i++) {
temp[i] = exams[i];
//3. list.exams가 새로만든 temp 배열을 참조하도록함
//exams = temp 하고는 다름 이거는 틀림
list.exams = temp;
}
}
// 이부분이 좀 이해가 안되지만 값이 여기서 들어간듯함
list.exams[list.current] = exam;
list.current++;
}
private static void printList(ExamList list) {
System.out.println("---------------------");
System.out.println("성적출력");
int size = list.current;
Exam[] exams = list.exams;
for(int i=0; i<size; i++) {
Exam exam = exams[i];
int kor = exam.kor;
int eng = exam.eng;
int math = exam.math;
int total = kor+eng+math;
float avg = total / 3.0f;
System.out.printf("국어%d : %d\n", i+1, kor);
System.out.printf("영어%d : %d\n", i+1, eng);
System.out.printf("수학%d : %d\n", i+1, math);
System.out.printf("총점 : %3d\n", total);
System.out.printf("평균 : %6.2f\n", avg);
System.out.println("----------------------");
}
}
}
list.exams[list.current] = exam;
-> 이부분이 좀 이해가 안되지만 다시 처음부터 강의랑 똑같이 작성하니까 작동이 정상적으로 되었다.
'Java 코드연습' 카테고리의 다른 글
[뉴렉처] 코드 실행과 함수 호출 스택 (0) | 2021.10.19 |
---|---|
[뉴렉처] 함수 오버로딩(overloading) (0) | 2021.10.19 |
[뉴렉처] 가변 길이를 위한 구조체 생성 (0) | 2021.10.18 |
[뉴렉처] 구조체 배열 이용하기 (0) | 2021.10.18 |
[뉴렉처] 구조체를 이용한 코드 작성하기 (0) | 2021.10.18 |