Day6 - finel, set

박경희·2023년 6월 1일
0

강의 복습 및 정리

목록 보기
15/40

1.final

        final float pie = 3.14f;
        final Integer i = 0;     // i = 1; -> 에러. 이렇게 final은 재선언이 안된다. 
  • 그러면 final을 왜 쓰는가?
  • 여기엔 Setter가 없다. final이여서 없다.
package Day6;

public class Test {
    public static void main(String[] args) {
//      set Queue Stack
        String str = "";
        final float pie = 3.14f;
        final Integer i = 0;     // i = 1; -> 에러. 이렇게 final은 재선언이 안된다.

    }
}

final class Person { // 여기에 붙인 final을 붙이는건 이 클래스에 더 변화가 없다라는 의미. final이 붙으면 상속될 수 없다. 최종 클래스이기 때문.
    private final Integer num;  //-> final이기 때문에 넣을수가 없으니 무조건 null이라 에러가 뜬다.

    private final String name;  // 이런 필드에 final을 붙이는건 여기 필드에서 더이상 변화가 없다는 의미를 나타내는 것이다.

    public Person(Integer num, String name) {
        this.num = num;
        this.name = name;

    }
}

2.Set

package Day6;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class Test {
    public static void main(String[] args) {
//      set Queue Stack
//        String str = "";
//        final float pie = 3.14f;
//        final Integer i = 0;     // i = 1; -> 에러. 이렇게 final은 재선언이 안된다.
//        List<Integer> list = new ArrayList<>();
        Set<Integer> set = new HashSet<>();
        //=> 순서는 없다. 중복x  // 에러 종류 error(빨감. 돌아가지도 않음),  warning(노란것. 뭔가 이상하니 고치라는 뜻)
        set.add(1);
        set.add(2);
        set.add(1);                                  // 1에 노란게 떠있는건 워닝? 이다.
        System.out.println(set.size());//중복이 없기 때문에 2만 출력된다.
        
        for (Integer i : set                  //순서없는것은 foreach로 찍으면됨. 이렇게 하면 2, 1, 2가 모두 출려됨.
        ) {
            System.out.println(i);
        }

    }
}

        for (Integer i : set                  //순서없는것은 foreach로 찍으면됨. 이렇게 하면 2, 1, 2가 모두 출려됨.
        ) {
            System.out.println(i);          // 2 1 2 모두 출력
        }

        for (Integer i : set                  //순서없는것은 foreach로 찍으면됨. 이렇게 하면 2, 1, 2가 모두 출려됨.
        ) {
            System.out.printf("%d 입니다. %d%n", i, i);          // 2 1 2 모두 출력
        }
for (Integer i : set                  //순서없는것은 foreach로 찍으면됨. 이렇게 하면 2, 1, 2가 모두 출려됨.
        ) {
            System.out.printf("%f 입니다. %d %s%n", (float) i, i, "ㅎㅎㅎㅎ");          // 2 1 2 모두 출력
        }
        

->출력
2
1.000000 입니다. 1 ㅎㅎㅎㅎ
2.000000 입니다. 2 ㅎㅎㅎㅎ

  1. lotto만들기
    1.기본세팅.
package Day6;

public class Lotto {
    public static void main(String[] args) {
//        0 *45 +1  <= Math.random() * 45 +1 < 1 * 45 +1
//        1 <= number < 46 // 위에와 같은것. 이건 코딩아 아니라 수학..
//    
        System.out.println(Math.random() * 45 + 1);
    }
}
  1. 풀어봐라~
package Day6;

public class Lotto {
    public static void main(String[] args) {
//        0 *45 +1  <= Math.random() * 45 +1 < 1 * 45 +1
//        1 <= number < 46 // 위에와 같은것. 이건 코딩아 아니라 수학..
//        6개 중복 x
//        Math.random() * 45 + 1 double -> 정수로 나오게해야함. 중복이 없으려면 set을 사용해야 한다.
//        set의 사이즈가 6이 될때까지
//        number를 만들자.
//        그 다음 출력하자.
        System.out.println(Math.random() * 45 + 1);
    }
}
  1. 내가 풀어본 것
package Day6;

import java.util.HashSet;
import java.util.Set;

public class Lotto {
    public static void main(String[] args) {
//        0 *45 +1  <= Math.random() * 45 +1 < 1 * 45 +1
//        1 <= number < 46 // 위에와 같은것. 이건 코딩아 아니라 수학..
//        6개 중복 x
//        Math.random() * 45 + 1 double -> 정수로 나오게해야함. 중복이 없으려면 set을 사용해야 한다.
//        set의 사이즈가 6이 될때까지
//        number를 만들자.
//        그 다음 출력하자.
        Set<Integer> set = new HashSet<>();
        for (int i = 1; i < 7; i++) {
            System.out.println((int) (Math.random() * 45 + 1));

-> 우선 랜덤 숫자 6개 값은 받았다!

  1. 그렇지만 이렇게 만드는 거다. 중복값을 받지 않기 위해 set을 사용해야 한다.
package Day6;

import java.util.HashSet;
import java.util.Set;

public class Lotto {
    public static void main(String[] args) {
//        0 *45 +1  <= Math.random() * 45 +1 < 1 * 45 +1
//        1 <= number < 46 // 위에와 같은것. 이건 코딩아 아니라 수학..
//        6개 중복 x
//        Math.random() * 45 + 1 double -> 정수로 나오게해야함. 중복이 없으려면 set을 사용해야 한다.
//        /0.
//        1.set의 사이즈가 6이 될때까지
//        2.number를 만들자
//        2-1. Math.random()
//        3.그 다음 출력하자.
//        5개 만들기.
        Set<Integer> set = new HashSet<>();         //0.
        while (set.size() != 6) {                   //1. set의 사이즈가 6이 될 때까지.
            set.add((int) (Math.random() * 45 + 1));
        }
        for (int i : set) {
            System.out.println(i);
        }
    }
}

0개의 댓글