본문 바로가기

국비지원/시즌2

/homework1 URL을 요청하면 주사위를 굴려서 주사위 값 화면에 출력 되게 만들기

한달 휴강 끝나고 다시 수업이 들어가면서 과제가 주어졌다.

 

하루에 하나씩 간단한 거 주는듯?

협업환경 세팅하고(노션, 깃, 슬랙) 스프링 깔기만 했는데 이틀이 삭제되어버린 건 개인적으로 무척 아쉽다..

한 달 휴강을 해서인지 마음이 급해서 그런듯ㅠㅠ

 

스프링으로 서버 만들고 주사위를 화면에 출력하는 과제를 받았다.

그치만 주사위를 만들어본 적이 없는뎅..?ㅋㅋ

 

서치해서 찾은 주사위 메소드를 대충 갖다붙였더니 된다.

package com.example.homework.Controller;


import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.function.IntSupplier;

@RestController
public class HW_RestController {

    @GetMapping("/homework1")
    public int dice() {
        IntSupplier intSupplier = () -> {
            int num =(int) (Math.random()*6) + 1;
            return num;
        };

        int num = intSupplier.getAsInt();
        return num;
    }
}

 

IntSupplier 클래스 처음 보는데 걍 갖다붙임..ㅋㅋ

람다도 배웠는데 기억이 안 나네..? 인스턴스를 저런식으로도 만드나?

 

(int) (Math.random()*n) +1 하면 1 ~ n까지의 숫자가 랜덤하게 나오는 원리가 한순간 이해가 안됨.ㅠ

 

1~6까지의 숫자를 랜덤하게 나오게 하려면 왜 Math.random() 에 6을 곱하고 1을 더해야 하는가?

Math.random()은 0과 1 사이의 숫자를 랜덤으로 뱉음. 

0 < Math.random() < 1 이니까 6을 곱하면
0*0 < Math.random()*6 < 1*6, 즉 0부터 5.9999.....의 숫자가 나온다.
int형으로 캐스팅하면 소수점 이하 날아가니까 0 ~ 5 중에 하나가 나온다.
여기에 1을 더해주면 1 ~ 6 사이의 수가 랜덤하게 나오게 되는 것이다!

 

내가 나중에 또 까먹을까봐 이해한 김에 정리해봄ㅎ

 

그렇다면 IntSupplier 클래스는 뭐냐..?

javadoc 가보니까 클래스 아니고 인터페이스란다..ㅎ... 뭐지..?

아직 javadoc을 읽기는 힘들어..ㅠ..

 

이것은 함수적 인터페이스이고...하..파파고...help..

 

아 ㅇㅋ 대충 이해했어ㅋ 근데 걍 복붙을 해왔기 때문에 이것만 봐서는 왜 쓰는지 알수가 없다.ㅠ

 

근데 dice 메소드 부분을

public int dice() {
        int num =(int) (Math.random()*6) + 1;
        return num;
}

이렇게만 고쳐도 똑같이 나왔다.

 

??

 

당연하긴 한데?ㅋㅋ

 

얏호 과제끝!!

 

커밋 푸쉬 하려니까 intellij 가 num 쓸데없는데 왜쓰냐 그래서 지움;; ㅠㅠ,,,

 

진짜 최종

public int dice() {
            return (int) (Math.random()*6) + 1;
    }

 

그런데 커밋 푸쉬 잘못해서 github에 푸쉬한 거 날리려는데 어케 하는 지 모르겠다.

 

하 결국 지우고 다시 했다..ㅋㅋㅋ

 

git log로 커밋 내역 확인

git reset HEAD^ 명령어로 가장 최근 커밋 내역 삭제(잘못 올린게 가장 최근 아니고 전전거라 두번...ㅠ)

git add ./ 치고

git commit -am "커밋 메시지" 치고

git push origin main 치니까 reject 당하고..(failed to push some refs to ... 에러)

git push -f origin 하니까 갑자기 됐다!!

ㅠㅠㅠ....

 

이러고 커밋메시지 제출형식 틀려서 깃헙에서 수정..헤...

 

아무튼..해결...!

하..이거 한 3시간 붙잡고 있었던 거 같다ㅋ..ㅎ...ㅎ...