본문 바로가기

bitcamp/JAVA

컬렉션 프레임워크_연습문제1

1. 아래와 같이 양수를 입력받아 저장하고, 가장 큰 수를 출력하는 프로그램을 작성하여라.

    단, Scanner 클래스로 -1이 입력되면 종료되어 큰 수가 출력된다.

 

· 참고

· 작성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 class Link{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        List<Integer> list = new LinkedList<>();
        int max = 0;
        
        System.out.println("정수를 입력해주세요(-1은 stop)");
        
        while(true) {
            Integer num;
            num = sc.nextInt();
            list.add(num);
            
            if(num == -1)
                break;    
 
            for(int e : list) {
                if(max < e)    
                    max = e;
            }        
    }System.out.println("가장 큰 수는 " + max);
    }
 }
cs

 

2. Scanner 클래스를 사용하여 6개 학점('A', 'B', 'C', 'D', 'F')을 입력받아 ArrayList에 저장하고,

  ArrayList를 검색하여 학점을 점수(A=4.0, B=3.0, C=2.0, D=1.0, F=0)로 변환하여 평균을 출력하는 프로그램을 작성하라.

 

· 참고

· 작성

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
 class Grade{
    private double sum;
    private double avg;
    List<String> list;
 
    Grade(){
    }        
    public void input() {
        list = new ArrayList<>();    
        Scanner sc = new Scanner(System.in);
        System.out.println("성적을 입력해주세요");
        
        for(int i = 0; i < 6; i++) {
            String grade = sc.next();
            list.add(grade);
            
            switch(grade) {
            case "A" :
                sum += 4.0;
                break;
            case "B" :
                sum += 3.0;
                break;
            case "C" :
                 sum += 2.0;
                break;
            case "D" :
                sum += 1.0;
                break;
            case "F" :
                sum += 0;
                break;
            }
        }
    }
    public void output() {
        double avg = sum / list.size();
        System.out.println("총점은 " + sum);
        System.out.println("평균은 " + avg);
    }
 }
cs

 

1
2
3
4
5
6
7
 class Grademain {
    public static void main(String[] args) {
        Grade gr = new Grade();
            gr.input();
            gr.output();
    }
 }
cs

 

 

3. 로또 프로그램을 작성하시오. (Set으로)

1
2
3
4
5
6
7
8
9
 class Lotto {
    public static void main(String[] args) {
        Set<Integer> set = new HashSet<Integer>();
        while(set.size() < 6) {
    set.add((int)(Math.random() * 45+ 1);
        }
        System.out.println(set);
    }
 }
cs

 

 

4. 출력이 아래와 같이 나오도록 하시오. **필수**

· 참고

· 작성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 class Num {
    private int num;
    
    public Num(int n) {
        num = n;
    }    
    @Override
    public String toString() {
        return String.valueOf(num);
    }
        
    @Override
    public int hashCode() {
        return num % 3;
    }
    @Override 
    public boolean equals(Object obj) {
        if(num == ((Num2)obj).num)
            return true;
       else
            return false;
    }
 }
cs

 

※위 코드에서 public int hashCode() 주석 처리 시 3개의 값이 출력되는 이유?

· hashCode를 통해 분류되는 주소값을 가진 군집에 객체들이 분류되어야 하는데 주석 처리 시 주소값이

  생성되지않기 때문에 분류가 이루어지지 않아 3개의 값이 출력된다.

 

 

5. 아래와 같이 출력되도록 하시오.

· 참고

 

· 작성

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
 class Person {
    private String name;
    private int age;
    
    Person(String name, int age){
        this.name = name;
        this.age = age;
    }
    @Override
    public String toString() {
        return name + "(" + age + "세)";
    }    
    @Override
    public int hashCode() {
        return age % 3;    
       //3으로 나누지 않아도 ok!! age로 분류되서 이름이 같지 않으면 또 분류되기 때문!
       //equals에서 이름, 나이 둘 다 따지기 때문! 꼭 String은 equals로 비교하기.
   }
    @Override
    public boolean equals(Object obj) {
        String n = ((Person)obj).name;
        int a = ((Person)obj).age;
 
        if((this.name.equals(n)) && (this.age == a))
            return true;
        else
            return false;
    }
 }
cs

 

 

6. 아래의 IntegerComparator를 내림차순 정렬이 되도록 구현하시오.

· 참고

 

· 작성

1
2
3
4
5
6
 class IntegerComparator implements Comparator<Integer>{
    @Override
    public int compare(Integer n1, Integer n2){
        return n2.intValue() - n1.intValue();
    }
 }
cs

 

 

'bitcamp > JAVA' 카테고리의 다른 글

컬렉션 프레임워크_연습문제2  (0) 2021.02.06
컬렉션 프레임워크  (0) 2021.02.05
제네릭_연습문제  (0) 2021.01.26
제네릭  (0) 2021.01.25
자바의 기본 class_연습문제  (0) 2021.01.25