일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 컬렉션프레임워크
- IF else
- 간단한 연산
- color code
- decimalformat
- Math 함수
- SQLIntegrityConstraintViolationException
- DropDown
- 문자열 비교
- Scanner
- switch-case
- 변수
- 삼항(조건) 연산자
- 형변환 연산자
- 변수 기본형
- 유효성 검사
- 반복문
- count_program
- Style Sheet
- 관계 연산자
- Do while
- 논리 연산자
- 업다운 게임
- 표 구현
- 할당 연산자
- 접근제한자
- 가위바위보 게임
- var 변수
- 배열 array
- 객체 배열
Archives
- Today
- Total
무룩 공부방
[Java02] 컬렉션 프레임 워크 (8) List/map 응용(Eclipse) 본문
# 이전에 작성했던 성적처리 프로그램을 ArrayList안에 HashMap으로 코드를 수정
<Student.java>
package java02_intermediate.ArrayListScoreMapinlist.copy;
public class Student {
private int num;
private String name;
private int kor;
private int eng;
private int mat;
private int tot;
private double avg;
private String hak;
private int rank;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getKor() {
return kor;
}
public void setKor(int kor) {
this.kor = kor;
}
public int getEng() {
return eng;
}
public void setEng(int eng) {
this.eng = eng;
}
public int getMat() {
return mat;
}
public void setMat(int mat) {
this.mat = mat;
}
public int getTot() {
return tot;
}
public void setTot(int tot) {
this.tot = tot;
}
public double getAvg() {
return avg;
}
public void setAvg(double avg) {
this.avg = avg;
}
public String getHak() {
return hak;
}
public void setHak(String hak) {
this.hak = hak;
}
public int getRank() {
return rank;
}
public void setRank(int rank) {
this.rank = rank;
}
}
<StudentMethod>
package java02_intermediate.ArrayListScoreMapinlist.copy;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class StudentMethod {
Scanner sc = new Scanner(System.in);
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
public void insertView() {
Map<String, Object> map = new HashMap<String, Object>();
System.out.print("번호 이름 국어 영어 수학 입력 >> ");
int num = sc.nextInt();
String name = sc.next();
int kor = sc.nextInt();
int eng = sc.nextInt();
int mat = sc.nextInt();
map.put("num", num);
map.put("name", name);
map.put("kor", kor);
map.put("eng", eng);
map.put("mat", mat);
map = totAvgHakPro(map);
list.add(map);
rankPro();
}
// 총점, 평균, 학점
public Map<String, Object> totAvgHakPro(Map<String, Object> map) {
int tot = (int)map.get("kor") + (int)map.get("eng") + (int)map.get("mat");
double avg = tot / 3.;
String hak = " ";
if(avg >= 80) hak = "합격";
else hak = "불합격";
map.put("tot", tot);
map.put("avg", avg);
map.put("hak", hak);
map.put("rank", 1);
return map;
}
// 등수구하기
public void rankPro() {
for(Map<String, Object> i : list) {
int rank = 1;
for(Map<String, Object> j : list) {
if((double)i.get("avg") < (double)j.get("avg")) {
++rank;
i.put("rank", rank);
}
}
}
}
// 타이틀 출력
public void print() {
System.out.println("\t\t성적표");
System.out.println("번호\t이름\t국어\t영어\t수학\t총점\t평균\t학점\t등수");
}
// 레코드 출력
public void ptintRecord() {
for(Map<String, Object> i : list) {
System.out.print(i.get("num")+"\t");
System.out.print(i.get("name")+"\t");
System.out.print(i.get("kor")+"\t");
System.out.print(i.get("eng")+"\t");
System.out.print(i.get("mat")+"\t");
System.out.print(i.get("tot")+"\t");
System.out.print(i.get("avg")+"\t");
System.out.print(i.get("hak")+"\t");
System.out.print(i.get("rank")+"\n");
}
System.out.println("가변배열의 길이 >> "+list.size());
}
// 검색
public String search(int numBun) {
for(Map<String, Object> i : list) {
if(numBun == (int)i.get("num")) {
print();
System.out.println(i.get("num")+"\t"+i.get("name")+"\t"+i.get("kor")+"\t"+i.get("eng")+"\t"+
i.get("mat")+"\t"+i.get("tot")+"\t"+i.get("avg")+"\t"+i.get("hak")+"\t"+i.get("rank"));
return "[검색완료!]";
}
}
return "[일치하는 번호가 없습니다.]";
}
// 삭제
public boolean delete(int numBun) {
for(Map<String, Object> i : list) {
if(numBun == (int)i.get("num")) {
list.remove(i);
rankPro();
return true;
}
}
return false;
}
//수정
public int update(int numBun) {
for(Map<String, Object> i : list) {
if(numBun == (int)i.get("num")) {
System.out.print("수정할 "+numBun+"번 이름 국어 영어 수학 입력 >> ");
String name = sc.next();
int kor = sc.nextInt();
int eng = sc.nextInt();
int mat = sc.nextInt();
System.out.print("입력한 데이터로 수정하시겠습니까? [Y / N] >> ");
String check = sc.next();
if(check.equalsIgnoreCase("Y")) {
i.put("name", name);
i.put("kor", kor);
i.put("eng", eng);
i.put("mat", mat);
totAvgHakPro(i);
rankPro();
return 1;
}else {
return 2;
}
}
}
return 3;
}
} //class
<StudentMain>
package java02_intermediate.ArrayListScoreMapinlist.copy;
import java.util.Scanner;
public class StudentMain {
public static void main(String[] args) {
// 메뉴
Scanner sc = new Scanner(System.in);
StudentMethod sm = new StudentMethod();
boolean chk = true;
while(chk) {
System.out.println("작업선택");
System.out.print("[1]입력 [2]출력 [3]검색 [4]삭제 [5]수정 [6]종료 >> ");
int menu = sc.nextInt();
switch(menu) {
case 1 :
sm.insertView();
break;
case 2 :
sm.print();
sm.ptintRecord();
break;
case 3 :
System.out.print("검색하고자 하는 번호 입력 >> ");
int num = sc.nextInt();
String searchCheck = sm.search(num);
System.out.println(searchCheck);
break;
case 4 :
System.out.print("삭제하고자 하는 번호 입력 >> ");
num = sc.nextInt();
boolean boolCheck = sm.delete(num);
if(boolCheck == true) System.out.println("[레코드 삭제완료!]");
else System.out.println("[삭제하고자 하는 레코드 없음.]");
break;
case 5 :
System.out.print("수정하고자 하는 번호 입력 >> ");
num = sc.nextInt();
int updateCheck = sm.update(num);
if(updateCheck == 1) {
System.out.println("수정되었습니다!");
}
else if(updateCheck == 2){
System.out.println("수정 취소 되었습니다.");
}else{
System.out.println("[수정하고자 하는 레코드 없음.]");
}
break;
case 6 :
chk = false;
System.out.println("프로그램 종료");
break;
}
}
sc.close();
}
}
'IT > Java02_Intermediate' 카테고리의 다른 글
[Java02] 22. 다형성 (Eclipse) (4) | 2023.10.02 |
---|---|
[Java02] 21. 상속 (Eclipse) (0) | 2023.09.28 |
[Java02] 20. 컬렉션 프레임 워크 (7) List/Map 응용(Eclipse) (0) | 2023.09.28 |
[Java02] 19. 컬렉션 프레임 워크 (6) List/Map 연습(Eclipse) (0) | 2023.09.26 |
[Java02] 컬렉션 프레임 워크 (5) HashMap 응용(Eclipse) (2) | 2023.09.21 |