ArrayList와 HashMap을 이용한 Student 클래스 관리

Jane·2023년 2월 24일
0

IT 수업 정리

목록 보기
53/124

문제

학생마다 Student 객체를 생성하고 4명의 학생 정보를 ArrayList< Student > 컬렉션에 저장한 후에,
ArrayList< Student >의 모든 학생(4명) 정보를 출력하고
학생 이름을 입력 받아 해당 학생의 학점 평균을 출력하는 프로그램을 작성하라.

[학생 이름, 학과, 학번, 학점평균 입력하세요.]
(입력 1) 황기태, 모바일, 1, 4.1
(입력 2) 이재문, 안드로이드, 2, 3.9
(입력 3) 김남윤, 웹공학, 3, 3.5
(입력 4) 최찬미, 빅데이터, 4, 4.25


이름: 황기태
학과: 모바일
학번: 1
학점평균: 4.1


이름: 이재문
학과: 안드로이드
학번: 2
학점평균: 3.9


이름: 김남윤
학과: 웹공학
학번: 3
학점평균: 3.5


이름: 최찬미
학과: 빅데이터
학번: 4
학점평균: 4.25


학생 이름 >> (입력) 최찬미
최찬미, 빅데이터, 4, 4.25
학생 이름 >> (입력) 이재문
이재문, 안드로이드, 2, 3.9
학생 이름 >> 그만

1. (공통) Student 클래스

class Student {
	private String name;
	private String major;
	private int num;
	private double scoreAvg;

	public Student(String name, String major, int num, double scoreAvg) {
		this.name = name;
		this.major = major;
		this.num = num;
		this.scoreAvg = scoreAvg;
	}

	public String getName() {
		return name;
	}

	public String getMajor() {
		return major;
	}

	public int getNum() {
		return num;
	}

	public double getScoreAvg() {
		return scoreAvg;
	}
}

2. 리스트 내용을 ArrayList<>에 담아서 만든 코드

import java.util.*;

class Student {
	private String name;
	private String major;
	private int num;
	private double scoreAvg;

	public Student(String name, String major, int num, double scoreAvg) {
		this.name = name;
		this.major = major;
		this.num = num;
		this.scoreAvg = scoreAvg;
	}

	public String getName() {
		return name;
	}

	public String getMajor() {
		return major;
	}

	public int getNum() {
		return num;
	}

	public double getScoreAvg() {
		return scoreAvg;
	}

}

class JavaPractice {

	public static void main(String[] args) {
		// 초기화
		List<Student> student = new ArrayList<>();
		Scanner scan = new Scanner(System.in);

		// 입력하기
		try {
			System.out.println("학생 이름, 학과, 학번, 학점 평균 입력");
			for (int i = 0; i <= 3; i++) {
				System.out.print("학생 " + (i + 1) + " >> ");
				String text = scan.nextLine();
				StringTokenizer st = new StringTokenizer(text, ",");
				String name = st.nextToken().trim();
				String major = st.nextToken().trim();
				int num = Integer.parseInt(st.nextToken().trim());
				double avg = Double.parseDouble(st.nextToken().trim());
				student.add(new Student(name, major, num, avg));
			}
		} catch (Exception e) {
			e.printStackTrace();
			System.exit(0);
		}

		// 출력하기
		System.out.println("=======================");

		for (Student s : student) {
			System.out.println("이름 : " + s.getName());
			System.out.println("학과 : " + s.getMajor());
			System.out.println("학번 : " + s.getNum());
			System.out.println("평균 : " + s.getScoreAvg());
			System.out.println("=======================");
		}

		// 검색하기

		try {
			while (true) {
				System.out.print("학생 이름 검색 >> ");
				String name = scan.nextLine();
				if (name.equals("그만")) {
					break;
				}
				for (int i = 0; i < student.size(); i++) {
					Student search = student.get(i);
					if (search.getName().equals(name)) {
						System.out.println(search.getName() + "," + search.getMajor() + ", " + search.getNum() + ","
								+ search.getScoreAvg());
					}
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

3. 리스트 내용을 HashMap<>에 담아서 만든 코드

import java.util.*;

class Student {
	private String name;
	private String major;
	private int num;
	private double scoreAvg;

	public Student(String name, String major, int num, double scoreAvg) {
		this.name = name;
		this.major = major;
		this.num = num;
		this.scoreAvg = scoreAvg;
	}

	public String getName() {
		return name;
	}

	public String getMajor() {
		return major;
	}

	public int getNum() {
		return num;
	}

	public double getScoreAvg() {
		return scoreAvg;
	}

}

class JavaPractice {

	public static void main(String[] args) {
		// 초기화
		Map<String, Student> student = new HashMap<String, Student>();
		Scanner scan = new Scanner(System.in);

		// 입력하기
		try {
			System.out.println("학생 이름, 학과, 학번, 학점 평균 입력");
			for (int i = 0; i <= 3; i++) {
				System.out.print("학생 " + (i + 1) + " >> ");
				String text = scan.nextLine();
				StringTokenizer st = new StringTokenizer(text, ",");
				String name = st.nextToken().trim();
				String major = st.nextToken().trim();
				int num = Integer.parseInt(st.nextToken().trim());
				double avg = Double.parseDouble(st.nextToken().trim());
				student.put(name, new Student(name, major, num, avg));
			}
		} catch (Exception e) {
			e.printStackTrace();
			System.exit(0);
		}

		// 출력하기
		System.out.println("=======================");

		Set<String> key = student.keySet();
		Iterator<String> itr = key.iterator();
		while (itr.hasNext()) {
			String name = itr.next();
			Student s = student.get(name);
			System.out.println("이름 : " + s.getName());
			System.out.println("학과 : " + s.getMajor());
			System.out.println("학번 : " + s.getNum());
			System.out.println("평균 : " + s.getScoreAvg());
			System.out.println("=======================");
		}

		// 검색하기

		try {
			while (true) {
				System.out.print("학생 이름 검색 >> ");
				String name = scan.nextLine();
				if (name.equals("그만")) {
					break;
				}
				Student search = student.get(name);
				if (search == null) {
					System.out.println(name + "학생은 존재하지 않습니다.");
				} else {
					System.out.println("이름 : " + search.getName());
					System.out.println("학과 : " + search.getMajor());
					System.out.println("학번 : " + search.getNum());
					System.out.println("평균 : " + search.getScoreAvg());
					System.out.println("=======================");
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
profile
velog, GitHub, Notion 등에 작업물을 정리하고 있습니다.

0개의 댓글