자바 기본 제출

재피터노트북·2022년 9월 23일
0

첫번째 문제 풀이

    1. var3의 값은 2.0의 더블형타입의 값을 갖게되고
    1. var4의 값은 (int)(2.0 + 2) --> 2.0 * 2의 값은 4.0이 되고 타입은 더블형이 된다. 근데 앞에 int형으로 바꿔줬기 때문에 출력결과가 4가 나오는 것이다.

결론은 출력 결과를 5로 생각한게 조금 이상하지 않나 생각이 듭니다..!
잠깐만..!! 그러나 다시 생각해 보았는데 5로 생각할수도 있을거 같습니다. 어디가 잘 못된거냐 이렇게 말씀하신다면 초기 변수 타입 설정을 잘 못하신거 같습니다. 그냥 단순하게 보면 5 / 2는 2.5인데 그값이 안나온 이유는 int / int 를해서 그런거 같습니다. int형 자료형 결과값에는 소수점 까지 연산을 하지 않기 때문인거 같아요.

int var1 = 5;
int var2 = 2;
double var3 = (var1 * 1.0) / (var2);
int var4 = (int)(var3 * var2);

System.out.println(var4);

그래서 이런식으로 위의 코드를 보면 var3부분에 int / int 가 아닌 int에 1.0을 곱해줘서 double 타입으로 전환하고 double / int를 하면 결과가 2.5가 나오게 되면서 var4의 값은 (int)(2.5 * 2) 이렇게하면 5.0의 더블형 타입을 int형으로 바꿔주면서 결과값이 5가 나오게 됩니다!

두번째 문제풀이

int a = 10;
int b = 20;        
int z = (++a) + (b--);

System.out.println(z);
  • a를 보면 증감연산자를 앞에써서 먼저 증가시키고 사용하니깐 (++a)값은 11이 되고 (b--)는 사용하고 감소시키니깐 20이 된다. 그러므로 결과값은 31이 나오게 된다.

증감연산자 자료 참고

세번째 문제풀이

import java.lang.Math;

public class Hello {
    public static void main(String[] args) {

        System.out.println("시작!");
        while (true) {
            int a = (int)(Math.random() * 6)+1;
            int b = (int)(Math.random() * 6)+1;

            System.out.print("(" + a + ",");
            System.out.println(b + ")");
            if (a + b == 5) break;
        }
        System.out.println("끝!");

    }
}

출력결과

Math.random 함수 : 0.0 <= double value < 1.0 의 값을 랜덤으로 출력한다.

    1. while 문의 조건을 true로 지정해줬다 그 이유는 a + b가 5가 되면은 그값을 출력하고 while문을 끝내고 싶었기 때문이다.
    1. a = (int)(Math.random() * 6)+1 코드는 주사위 값은 1부터 6까지니깐 random함수의 나오는 값에 곱하기 6를 하고 int형으로 바꿔주면 0 ~ 5까지 나오는데 0은 주사위값에 포함이 되지 않으니깐 +1을 해줘서 1 ~ 6 까지의 값이 랜덤으로 나오게 하였다.
    1. a, b의 값들을 출력해준다.
    1. a + b의 값이 5가 되면 while문을 빠져나오게 break을 하였다.
profile
난 이 재 선

0개의 댓글