예제 #1
0
        public void SortData()
        {
            int choice;

            while (true)
            {
                try
                {
                    Console.WriteLine("1. 이름 오름차순  |  2. 이름 내림차순  |  3. 전화번호 오름차순  |  4. 전화번호 내림차순");
                    Console.Write("선택 >> ");
                    if (int.TryParse(Console.ReadLine(), out choice))
                    {
                        if (choice < 1 || choice > 4)
                        {
                            throw new MenuChoiceException(choice);
                            //Console.WriteLine("1~4 까지의 숫자만 입력해주세요.");
                            //return;
                        }
                        else
                        {
                            break;
                        }
                    }
                }
                catch (MenuChoiceException err)
                {
                    err.ShowWrongChoice();
                }
            }


            PhoneInfo[] new_arr = new PhoneInfo[curCnt];             // 배열복제는 다 해야하니 밖으로 뺴서 한번만
            Array.Copy(infoStorage, new_arr, curCnt);

            if (choice == 1)
            {
                Array.Sort(new_arr);                 //인포스토리지를 바로 줘버리면 원본이 바뀌어버리니 카피떠서 해야함 그래서 카피한 배열을 줌
                //내가 만든 배열이기 때문에 컴파일러가 정렬할 기준을 몰라 내가 기준도 정해줘야함
            }
            else if (choice == 2)
            {
                Array.Sort(new_arr);
                Array.Reverse(new_arr);                 //reverse만하면 오름차순으로 정렬한 배열에 내림차순 완성
            }
            else if (choice == 3)
            {
                Array.Sort(new_arr, new PhoneComparator());                 // new PhoneComparator() 객체하나 만들어서 넘겨주면됨
            }
            else if (choice == 4)
            {
                Array.Sort(new_arr, new PhoneComparator());
                Array.Reverse(new_arr);
            }

            for (int i = 0; i < curCnt; i++)             // 출력도 마지막에 한번만 하면 되니 따로 뺴고
            {
                new_arr[i].ShowPhoneInfo();
                Console.WriteLine();
            }
        }
예제 #2
0
        public int CompareTo(object obj)
        {
            PhoneInfo other = (PhoneInfo)obj; //인자가 obj기 때문에 obj를 바꿀 클래스타입으로 형변환 해주고 인스턴스를 생성

            //if (this.name.CompareTo(other.name) == 1) //문자열은 크다작다 연산자가 없음,  앞에게 더크면 1
            //    return 1;
            //else if (this.name.CompareTo(other.name) == -1)
            //    return -1;
            //else
            //    return 0;

            return(this.name.CompareTo(other.name)); // 한줄
        }
        public int Compare(object x, object y)
        {
            PhoneInfo first = (PhoneInfo)x;
            PhoneInfo other = (PhoneInfo)y;

            //if (this.name.CompareTo(other.name) == 1) //문자열은 크다작다 연산자가 없음,  앞에게 더크면 1
            //    return 1;
            //else if (this.name.CompareTo(other.name) == -1)
            //    return -1;
            //else
            //    return 0;

            return(first.Phone.CompareTo(other.Phone));            // 한줄
        }
예제 #4
0
        public void InputData()
        {
            Console.WriteLine("1.일반  2.대학  3.회사");
            Console.Write("선택 >> ");
            int choice;

            while (true)
            {
                if (int.TryParse(Console.ReadLine(), out choice))
                {
                    break;
                }
            }
            if (choice < 1 || choice > 3)
            {
                Console.WriteLine("1.일반  2.대학  3.회사 중에 선택하십시오.");
                return;
            }
            PhoneInfo info = null;

            switch (choice)
            {
            case 1:
                info = InputFriendInfo();
                break;

            case 2:
                info = InputUnivInfo();
                break;

            case 3:
                info = InputCompanyInfo();
                break;
            }
            if (info != null)
            {
                infoStorage[curCnt++] = info;
                Console.WriteLine("데이터 입력이 완료되었습니다");
            }
        }