• Homework(11)

    2021. 7. 8.

    by. 와트

    ※문제. 다음과 같이 회원정보를 하나의 문자열로 담았다. 각회원별 정보의 순서는 회원번호,이름,키,몸무게,생일(yyyyMMdd)이다. 각각의 회원정보를 분리해서, 회원객체에 담고, 회원객체배열에 추가한다. 출력메소드를 통해 회원정보를 출력한다.

    "1,김연아,165,47,19900905|2,양세형,167,60,19850818|3,김래원,182,80,19810319"

    - 회원 Member
    - memberNo : int
    - memberName : String
    - height : int
    - weight : int
    - birth : Calendar
    + information() : String

    - 실행클래스 Run

     

    Calendar클래스 어떻게 이용하는지 제대로 이해를 못했는데 이 문제 풀고 다시 이해했다.

    복잡복잡... 아직도 객체 배열은 어렵다.

    더보기
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    public class Member {
     
        private int memberNo;
        private String memberName;
        private int height;
        private int weight;
        private Calendar birth;
        
        
        
        public Member() {
            super();
        }
     
        public Member(int memberNo, String memberName, int height, int weight, Calendar birth) {
            super();
            this.memberNo = memberNo;
            this.memberName = memberName;
            this.height = height;
            this.weight = weight;
            this.birth = birth;
        }
     
     
        public int getMemberNo() {
            return memberNo;
        }
     
        public void setMemberNo(int memberNo) {
            this.memberNo = memberNo;
        }
     
        public String getMemberName() {
            return memberName;
        }
     
        public void setMemberName(String memberName) {
            this.memberName = memberName;
        }
     
        public int getHeight() {
            return height;
        }
     
        public void setHeight(int height) {
            this.height = height;
        }
     
        public int getWeight() {
            return weight;
        }
     
        public void setWeight(int weight) {
            this.weight = weight;
        }
     
        public Calendar getBirth() {
            return birth;
        }
     
        public void setBirth(Calendar birth) {
            this.birth = birth;
        }
     
        public String information() {
            int year = birth.get(Calendar.YEAR);
            int month = birth.get(Calendar.MONTH);
            int date = birth.get(Calendar.DATE);
            
            return "회원번호:" + memberNo + "  " +
                    "이름:" + memberName + "  " +
                    "키:" + height + "  " +
                    "몸무게:" + weight + "  " +
                    "생일:" + year + "/" + make2digit(month) + "/" + make2digit(date);
        }
        
        public String make2digit(int n) {
            return (n < 10"0" : ""+ n;
        }
        
    }
    cs

    멤버 클래스랑,

     

    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
    32
    33
    34
    35
    36
    37
    public class Run {
     
        public static void main(String[] args) {
     
            
            String csv = "1,김연아,165,47,19900905|2,양세형,167,60,19850818|3,김래원,182,80,19810319"
            
            String[] splitCsv = csv.split("[| ]");
            
            
            for(int i = 0; i < splitCsv.length; i++) {
                String[] member = splitCsv[i].split(",");
                Member m = new Member();
                for(int j = 0; j < member.length; j++) {
                    switch(j) {
                    case 0 : 
                        m.setMemberNo(Integer.parseInt(member[j])); break;
                    case 1 : 
                        m.setMemberName(member[j]); break;
                    case 2 : 
                        m.setHeight(Integer.parseInt(member[j])); break;
                    case 3 : 
                        m.setWeight(Integer.parseInt(member[j])); break;
                    case 4 : 
                        Calendar cal = Calendar.getInstance();
                        cal.set(Integer.parseInt(member[j].substring(04)), 
                            Integer.parseInt(member[j].substring(46)), 
                            Integer.parseInt(member[j].substring(6)));
                        m.setBirth(cal);
                        break;
                    }
                }
                System.out.println(m.information());
            }
        }
     
    }
    cs

     

    실행클래스.

    Member[]에 정보들을 넣어야 할 것 같긴 한데 Calendar에서 엄청 헤매고 배열에 Member객체를 어느 라인에 넣어야 할지도 모르겠어서 결국 반복문 안에 information메소드 실행하고 마무리했다.

    이렇게 하면 출력은 원하는 대로 나오는데 나중에 회원 정보를 불러올 수가 없다. 반복문 돌 때마다 Member m이 초기화되기 때문에...

    그리고 첫 split메소드에서 csv.split("|")라고 하면 자꾸 |를 걸러주질 않아서 정말 고민했다. 결과적으로 정규표현식을 쓰니까 걸러지긴 했는데 이때 escaping처리를 잊고 있었다...

     

    어영부영 Calendar도 돌아가긴 했는데 Month는 0부터 시작한다는 것도 잊지 않고 기억해야 한다. 이번에 입력시 넣을 -1과 출력시 넣을 +1이 무효로 맞아 떨어져서 잘못된 값이 안 나왔는데 유의하고 풀기.

     

    더보기

     

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    public class Member {
     
        private int memberNo;
        private String memberName;
        private int height;
        private int weight;
        private Calendar birth;
        
        
        
        public Member() {
            super();
        }
     
        public Member(int memberNo, String memberName, int height, int weight, Calendar birth) {
            super();
            this.memberNo = memberNo;
            this.memberName = memberName;
            this.height = height;
            this.weight = weight;
            this.birth = birth;
        }
     
     
        public int getMemberNo() {
            return memberNo;
        }
     
        public void setMemberNo(int memberNo) {
            this.memberNo = memberNo;
        }
     
        public String getMemberName() {
            return memberName;
        }
     
        public void setMemberName(String memberName) {
            this.memberName = memberName;
        }
     
        public int getHeight() {
            return height;
        }
     
        public void setHeight(int height) {
            this.height = height;
        }
     
        public int getWeight() {
            return weight;
        }
     
        public void setWeight(int weight) {
            this.weight = weight;
        }
     
        public Calendar getBirth() {
            return birth;
        }
     
        public void setBirth(Calendar birth) {
            this.birth = birth;
        }
     
        public String information() {
            int year = birth.get(Calendar.YEAR);
            int month = birth.get(Calendar.MONTH);
            int date = birth.get(Calendar.DATE);
            
            return "회원번호:" + memberNo + "  " +
                    "이름:" + memberName + "  " +
                    "키:" + height + "  " +
                    "몸무게:" + weight + "  " +
                    "생일:" + year + "/" + make2digit(month + 1+ "/" + make2digit(date);
        }
        
        public String make2digit(int n) {
            return (n < 10"0" : ""+ n;
        }
        
    }
    cs

     

    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
    32
    33
    34
    35
    36
    37
    38
    public class Run {
     
        public static void main(String[] args) {
     
            
            String csv = "1,김연아,165,47,19900905|2,양세형,167,60,19850818|3,김래원,182,80,19810319"
            
            String[] splitCsv = csv.split("\\|");
            
            Member[] memberArr = new Member[splitCsv.length];
            for(int i = 0; i < splitCsv.length; i++) {
                String[] member = splitCsv[i].split(",");
                Member m = new Member();
                for(int j = 0; j < member.length; j++) {
                    switch(j) {
                    case 0 : 
                        m.setMemberNo(Integer.parseInt(member[j])); break;
                    case 1 : 
                        m.setMemberName(member[j]); break;
                    case 2 : 
                        m.setHeight(Integer.parseInt(member[j])); break;
                    case 3 : 
                        m.setWeight(Integer.parseInt(member[j])); break;
                    case 4 : 
                        Calendar cal = Calendar.getInstance();
                        cal.set(Integer.parseInt(member[j].substring(04)), 
                                Integer.parseInt(member[j].substring(46)) - 1
                                Integer.parseInt(member[j].substring(6)));
                        m.setBirth(cal);
                        break;
                    }
                }
                memberArr[i] = m;
                System.out.println(m.information());
            }
        }
     
    }
    cs

     

    고친다면 이렇게.

    그래도 switch문 이용해서 풀어본 거 재밌었다!

     

    1
    2
    3
    4
    5
    6
    7
    8
                m.setMemberNo(Integer.parseInt(mStr[0]));
                m.setMemberName(mStr[1]);
                m.setHeight(Integer.parseInt(mStr[2]));
                m.setWeight(Integer.parseInt(mStr[3]));
                int yyyy = Integer.parseInt(mStr[4].substring(0,4));
                int mm = Integer.parseInt(mStr[4].substring(4,6));
                int dd = Integer.parseInt(mStr[4].substring(6));
                m.setBirth(new GregorianCalendar(yyyy,mm-1,dd));
    cs

    선생님처럼 간단히 풀 수도 있지만, 반복문 써보고 싶어서 해봤다.

    '혼자 있는 방 > Java' 카테고리의 다른 글

    Homework(12)  (0) 2021.07.13
    실기_Test(2)  (0) 2021.07.06
    필기_Test(2)  (0) 2021.07.05
    Homework(10)  (0) 2021.07.02
    Homework(9)  (0) 2021.07.01

    댓글

Designed by Nana