[java] 학생 관리 프로그램 (2)

2022. 4. 24. 19:24·언어/java
728x90
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;

public class Map_students {

    public static void main(String[] args) {
        int answer;
        int ID;
        String name;
        String birth;
        String major;

        HashMap<Integer, ArrayList> Student;
        Student = new HashMap<>();
//        ArrayList Info = new ArrayList();
//        처음에 이곳에서 ArrayList의 선언과 초기화를 동시에 진행했고, 학생 전부가 따로 저장되는 것이 아니라 하나의 Info 안에 전부 저장되는 오류가 나타났다.
//        지역변수와 전역변수의 차이를 제대로 인지하지 못한 탓이 크다.

        Scanner sc = new Scanner(System.in);

        while (true) {
            ArrayList Info = new ArrayList();

            System.out.println("1. 학생 정보 등록 \n2. 학생 정보 검색 \n3. 종료");
            answer = sc.nextInt();

            if (answer == 1) {

                System.out.println("학생 학번을 입력해주세요.");
                ID = sc.nextInt();

                System.out.println("학생 이름을 입력해주세요.");
                name = sc.next();
                Info.add(name);

                System.out.println("학생 생일을 입력해주세요.");
                birth = sc.next();
                Info.add(birth);

                System.out.println("학생 학과를 입력해주세요.");
                major = sc.next();
                Info.add(major);

                Student.put(ID, Info);

            } else if (answer == 2) {
                System.out.println("학번을 입력해주세요.");
                int newID = sc.nextInt();

                System.out.println("학번 : " + newID + "\n이름 : " + Student.get(newID).get(0) + "\n생일 : " + Student.get(newID).get(1) + "\n학과 : " + Student.get(newID).get(2));
                System.out.println();


            } else if (answer == 3) {
                break;
            } else {
                System.out.println("잘못된 입력입니다.");
                System.out.println();
            }

        }
    }
}

바로 앞에 올린 1차 프로그램의 문제점을 고치기 위해 HashMap을 사용했다.

문제는 직전에 문제점이 반복됐다는 것이다(어떤 학번을 검색해도 첫번째로 등록한 학생의 정보만 출력되는 것).

주변에서 알려준 힌트를 통해 원인을 밝혔다.

코드에도 써있듯 ArrayList의 선언과 초기화를 잘못된 위치에서 한 게 문제였다.

올바른 위치로 옮겨주니 문제가 해결됐다.

앞으로 1~2번 더 코드를 수정하고 필요한 부분을 추가해서 프로그램을 완성하면 좋겠다.

728x90

'언어 > java' 카테고리의 다른 글

[이클립스] Eclipse 빨간줄, 노란줄, 초록줄 형광펜 없애기  (0) 2023.09.19
[java] 학생 관리 프로그램 (4) - db 연결 후 select  (0) 2022.04.24
[java] 학생 관리 프로그램 (3) - db 연결 후 insert, update, delete  (0) 2022.04.24
[java] 학생 관리 프로그램 (1)  (0) 2022.04.24
[java] 중복 없는 숫자 랜덤 생성기  (0) 2022.04.24
'언어/java' 카테고리의 다른 글
  • [java] 학생 관리 프로그램 (4) - db 연결 후 select
  • [java] 학생 관리 프로그램 (3) - db 연결 후 insert, update, delete
  • [java] 학생 관리 프로그램 (1)
  • [java] 중복 없는 숫자 랜덤 생성기
돌멩이수프
돌멩이수프
Information technology
  • 돌멩이수프
    WHAT DOES "IT" STAND FOR?
    돌멩이수프
  • 전체
    오늘
    어제
    • 분류 전체보기 (238)
      • 언어 (73)
        • html (3)
        • css (1)
        • java (6)
        • C (26)
        • C++ (2)
        • C# (29)
      • 공부 (7)
        • Unity (43)
        • 게임 서버 (26)
        • 네트워크 (5)
        • 데이터베이스 (7)
        • EFCore (19)
        • 기타 (14)
        • Git (5)
        • 운영체제 (1)
        • 소프트웨어공학 (21)
      • 2024-여름 (12)
      • 자기 관리 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    자바
    EntityFramework
    C
    코딩
    C언어
    Python
    라즈베리파이
    백준
    유니티
    디자인패턴
    Entityfamework
    coding
    HTML
    네트워크
    C#
    EFCore
    java
    tcp
    게임서버
    unity
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
돌멩이수프
[java] 학생 관리 프로그램 (2)
상단으로

티스토리툴바