[DEV] study&learn
article thumbnail
  • 다음 코드를 실행하면 출력 결과로 5를 기대했는데 4가 출력되었습니다. 어디에서 잘못 작성된 것일까요?
int var1=5;
int var2=2;
double var3=var1/var2;
int var4=(int)(var3*var2);
System.out.println(var4);

 

3열 코드를 보면,

변수 var3은 double 타입으로 실수 값을 받을 준비가 되어있지만

같은 열의 연산식 var1/var2 는 두 변수 모두 int 타입으로 계산을 하고 있다.

따라서 위의 경우에는 연산하는 과정에서 int 값으로 값이 정해진 후,

double 타입의 변수 var3에 2.0 이라는 값이 들어 간 것이다.

 

만약 double var3 = (double)var1/var2; 로 실행하였다면,

var3에 2.5 라는 값이 할당되어 원하는 결과를 얻을 수 있었을 것이다.

(강제 타입 변환을 이용)

 

2번
  • 다음 코드를 실행했을 때 출력 결과는 무엇입니까? (증감연산자에 대해 알아보세요!)
int x=10;
int y=20;
int z = (++x) + (y--);
System.out.println(z);

 

답은 31

 

++, -- 는 해당 값을 +1 혹은 -1 해주는 것

 

++/-- 가 변수 앞에 붙어 있다면, 해당 열의 코드가 실행되기 전에 변수의 값을 +1 한 후 실행하는 것이고,

++/-- 가 변수 뒤에 붙어 있다면, 해당 열의 코드가 실행된 후 변수의 값을 +1 하는 것이다.

 

따라서 3열이 실행 될 때,

x는 11, y는 20 의 값을 가지고 연산되기 때문에 z 변수에는 31이라는 값이 저장된다.

 

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

 

정답 코드 1.

public class Prac {
    public static void main(String[] args) {
        System.out.println("시작!");

        int var1 = (int)(Math.random()*6)+1;
        int var2 = (int)(Math.random()*6)+1;

        while (var1+var2 != 5) {
            var1 = (int)(Math.random()*6)+1;
            var2 = (int)(Math.random()*6)+1;
            System.out.println("("+var1+","+var2+")");
        }

        System.out.println("끝!");
    }
}

정답 코드 2.

public class Prac {
    public static void main(String[] args) {
        System.out.println("시작!");

        boolean flag = true;

        while (true) {
            int var1 = (int) (Math.random() * 6) + 1;
            int var2 = (int) (Math.random() * 6) + 1;
            
            if (var1 + var2 == 5) {
                break;
            }
            
            System.out.println("(" + var1 + "," + var2 + ")");
        }
        System.out.println("끝!");
    }
}

다른분들의 코드를 보면서 더 간결하고 보기 좋게 다듬고 싶다!

profile

[DEV] study&learn

@devjuni

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!