act==3 삭제부분에 주석처리된 부분이 우리가 컬렉션 프레임워크들을 공부하면 좋은 이유를 말해준다.
복잡하게 표현할 코드를 프레임워크 안에 있는 함수를 이용하여 더욱 간편하게 실행 할 수 있는 것이다.
package class01;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.Scanner;
class Student {
private String name; //멤버변수를 하이딩 했을 때 프로그램이 잘 적용되야 잘 된 코드
private int score;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
Student(String name) {
this.name = name;
Random rd = new Random();
this.score = rd.nextInt(101);
System.out.println(this.name + "학생 " + this.score + "점으로 등록 완료");
}
@Override
public String toString() {
return "학생이름=[" + name + "/ 점수" + score + "점]";
}
}
public class Test01 {
public static void main(String[] args) {
Map<Integer, Student> data = new HashMap<Integer, Student>(); // 컬렉션에는 제네릭 꼭 쓰기!
// 키값 , 밸류값
Scanner sc = new Scanner(System.in);
final int PK_START = 1001; // 키값은 1001부터 시작하는 것으로 한다. 시작된 수는 변하지 않기 때문에 final로 상수화
int PK = PK_START;
final int PK_MAX = 2000;
// 유니크! 프로그램이 부여 ID->중복확인
while (true) {
System.out.println("1. 등록 2.출력 3.삭제 4.종료");
System.out.println("입력) ");
int act = sc.nextInt();
if (act == 1) {
// 추가할 학생의 이름을 입력하세요
// 사용자가 학생이름 입력
// 학생 객체를 생성
// 생성한 객체 map에 저장
System.out.println(); // 사용자 편의성을 위해 입력 전에 한줄 띄기
System.out.println("학생 이름 입력) ");
String name = sc.next();
data.put(PK, new Student(name));
PK++;
}
else if (act == 2) {
if (data.size() == 0) {
System.out.println("저장된 데이터가 없습니다.!");
continue;
}
for (int i = PK_START; i < PK; i++) {
Student stu=data.get(i); // stu라는 객체에 PK_START부터 현재 등록된 PK까지 정보를 가져온다.
if(stu==null) { // 만약 stu 객체 내용이 삭제돼서 null(없음)이면
continue; // continue;로 위로 빠져나가게 한다. (아래는 출력하는 내용이기 때문에)
}
System.out.println(i+"번: "+stu); // 위에 continue 들을 만나지 않았다면, 결과가 있다는 뜻이기에 출력
}
} else if (act == 3) {
if (data.size() == 0) {
System.out.println("삭제 할 데이터가 없습니다.!");
continue;
}
System.out.print(" 삭제할 번호 입력) ");
int key = sc.nextInt();
/*
if(!data.containsKey(key)) {
System.out.println("해당번호의 학생이 존재하지않습니다!");
continue;
}
*/
if (key < PK_START || PK_MAX < key) { // 내가 입력한 key값이 PK시작보다 작거나 PK최대보다 클 때,
System.out.println("번호를 다시 확인하고 입력해주세요!");
continue;
// 삭제를 실패했을 때 멘트
}
Student stu = data.remove(key); // 삭제된 학생의 정보 임시저장용
System.out.println("로그: " + stu); // remove(입력값) 에 대한 output 은 Student이다.(생성을 그렇게함)
//즉 ,키값을 입력하면 그 키에 대한 Student 가 output
// 로깅기법
// ★로그
// -> 에러원인 분석 / 찾기 /해결방안 설명하기
if (stu == null) {
System.out.println("존재하지않는 학생번호입니다.");
continue;
// 삭제를 실패했을 때 멘트
}
System.out.println(stu + "삭제완료..");
// 2. 삭제성공 이후에 null로 출력되는걸 잡아야함.
} else if (act == 4) {
} else {
System.out.println("다시 입력해주세요!");
}
}
}
}
'개발자노트' 카테고리의 다른 글
예외와 예외처리(try, catch) 기본사용법 (0) | 2022.06.24 |
---|---|
예외와 예외처리 (try,catch) (0) | 2022.06.24 |
컬렉션 프레임워크 {Map} 사용법 (0) | 2022.06.23 |
컬렉션 프레임워크 {Map} (0) | 2022.06.23 |
컬렉션 프레임워크 [Set] 랜덤값으로 채우기 (0) | 2022.06.23 |