티스토리 뷰

개발/항해99

항해 Java 과제

욱스다 2022. 9. 23. 13:21

파이썬으로 미니프로젝트가 끝나고,

주특기 주에 앞서 알고리즘 문제풀이를 하게되는데 

그 과제로 3가지 문제를 받고 해당 문제를 리뷰하는 과제였다.

 

첫번째 문제로

다음 코드를 실행하면 출력 결과로 5를 기대했는데 4가 출력되었습니다. 어디에서 잘못 작성된 것일까요?

라는 질문이다.

int var1=5;
int var2=2;
double var3=var1/var2;
int var4=(int)(var3*var2);
System.out.println(var4);

코드를 보면

int 타입으로 var1, var2 해당 변수에 5, 2를 주고

var3은 double 실수형 타입으로 주어 var2를 var1로 나누어 주는 과정에서 

var1,var2는 int타입이여서 2를 5로 나누어준 값이 2.5가 출력이 되지않고 2.0이 출력되서 

예상은 5였지만 4가 출력된 문제이다.

그러므로 연산해주는 부분에 double로 형변환 해줄 수 있게  

아래와 같이 바꿔준다.

int var1=5;
int var2=2;
double var3=(double)var1/var2; // 2.5
System.out.println(var3);
int var4=(int)(var3*var2);
System.out.println(var4);

 

두번째 문제로는

int x=10;
int y=20;
int z = (++x) + (y--);
System.out.println(z);

인데 결과값으로는 31이 출력이된다.

증감연산자에 따르면 전위나 후위냐에 따라 다른 연산값이 나오는데

z에 x의 값인 10이 들어오고 전위로 +1 시켜주어 1추가되어 11

y에는 20이값이 들어오지만 -- 가 후위에 배치되어 20으로

31이 출력된다.

 

세번째 문제로는

while문과 Math.random() 메소드를 이용해서 2개의 주사위를 던졌을 때 나오는 눈을 (눈1, 눈2) 형태로 출력하고, 눈의 합이 5가 아니면 계속 주사위를 던지고, 눈의 합이 5이면 실행을 멈추는 코드를 작성해보세요. 눈의 합이 5가 되는 조합은 (1,4), (4,1), (2,3), (3,2)입니다.

int sum =0;
System.out.println("시작!");
while (true) {
    int x = (int)round((Math.random()*6))+1;
    int y = (int)round((Math.random()*6))+1;

    System.out.println("("+x+")"+","+"("+y+")");
    sum = x + y;
    if(sum == 5) {
        System.out.println("끝!");
        System.exit(0);
    }
}

while 문을 돌리기에 앞서 sum 이라는 주사위 x, y 값을 담을 수 있는 변수를 만들었고

while 문에 true로 주어 반복하게 만들고 이후에 x,y  값에 랜덤하게 값을 담도록 각 변수에 Math.random을 사용한뒤

주사위의 값은 1에서 6까지니까 곱하기 6 해준뒤, 0이 출력되면 안되니까 +1 

그렇게 값이 출력되고 sum이라는 값에 x, y값이 더해지는데 조건문을 만나서 조건 처리 후 종료될수있도록 

끝이라는 문구 출력후 종료할수있게 sum == 5 이면 System.exit 해주었습니다.

'개발 > 항해99' 카테고리의 다른 글

Git 시작하기 가이드.  (0) 2022.09.07
항해99 (웹개발 종합반 5주차)  (0) 2022.09.05
항해99 (웹개발 종합반 4주차)  (0) 2022.09.04
항해99 (웹개발 종합반 3주차)  (0) 2022.09.04
항해99 (웹개발 종합반 2주차)  (0) 2022.09.03
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/06   »
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
글 보관함