package class04;
import java.util.Scanner;
class Student {
String name;
int score;
void showInfo() {
System.out.println(name + "학생은 " + score + "점입니다.");
}
Student(String name, int score) {
this.name = name;
this.score = score;
System.out.println(this.name + "학생 입력완료.");
}
}
public class Test09 {
public static void main(String[] args) {
Student[] data = new Student[3]; // 객체배열
int index = 0; // 실질적으로 몇명이 담겨있는지 출력하기 위해, length 쓰면 그냥 3나옴
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("1. 추가");
System.out.println("2. 출력");
System.out.println("3. 변경");
System.out.println("4. 종료");
int act = sc.nextInt();
// 사용자가 입력하면 무조건 -> 유효성 검사!!
if (act == 1) {
if (index == data.length) { // 만약에 이미 인덱스길이인 3이 가득 찼다면,
System.out.println("데이터 공간이 부족!");
continue;
}
System.out.println("학생이름 입력: ");
String name = sc.next();
System.out.println("학생성적 입력: ");
int score = sc.nextInt();
data[index] = new Student(name, score); // 학생을 한명씩만 만드는거
index++; // 학생 한명을 index[0]번에 만들었기 때문에 다음은 1번에 저장해야하기 때문에 ++함
}
else if (act == 2) {
if (index == 0) {
System.out.println("저장한 정보가 없습니다!");
continue; // if문이 실행되면 위로!
}
System.out.println("===학생목록===");
for (int i = 0; i < index; i++) {
data[i].showInfo();
}
}
else if (act == 3) {
System.out.println("정보를 변경할 학생의 번호입력: ");
int num = sc.nextInt(); // 1->[0] ,
num--; // 실제 번호와 인덱스 넘버의 차이가 있다는 것을 생각해야함!!
if (num < 0 || index <= num) { // 유효성 검사 , 학생이 2명밖에 기록이 안돼있을 경우도 있으니까 1~3의값을 받아야한다고 생각하면 안됨
System.out.println("없는 번호입니다! 확인 후 다시이용해주세요~");
continue;
}
System.out.print(data[num].name + "학생의 변경할 점수 입력: ");
data[num].score = sc.nextInt();
System.out.println(data[num].name + "학생 정보 초기화 완료!");
}
else if (act == 4) {
System.out.println("종료됩니다..");
break;
}
else {
System.out.println("잘못된 입력입니다.");
}
}
}
}