JAVA 과제 풀이

딩딩당당·2022년 11월 18일
0
  • 다음 코드를 실행하면 출력 결과로 5를 기대했는데 4가 출력되었습니다. 어디에서 잘못 작성된 것일까요?
int var1=5;
int var2=2;
double var3=var1/var2;
int var4=(int)(var3*var2);
System.out.println(var4);

결론부터 말하자면 타입이 문제였다. var3 자체는 double타입이지만 연산하는 var1과 var2가 int타입이기 때문에 결과값도 int로 저장되어 소수점 아래가 생략되었다. 그래서 실제로 var3을 출력해봤을 때 2.0이 출력되는 것을 확인할 수 있었다.

  • 수정
      int var1=5;
      int var2=2;
      double var3=(double)var1/var2; // double로 자동 형변환
      int var4=(int)(var3*var2);
      System.out.println(var4);

var1을 double로 명시해줘서 연산시 double타입으로 자동 형변환이 되게끔 수정하였다.

  • 다음 코드를 실행했을 때 출력 결과는 무엇입니까?
      int x=10;
      int y=20;
      int z = (++x) + (y--);
      // x = 11, y = 20;
      System.out.println(z);

정답은 31이다 증감 연산자 ++, -- 는 변수 앞에 붙느냐 뒤에 붙느냐에 따라 의미가 다르다. 앞에 붙으면 증가하거나 감소한 값을 변수에 바로 대입한다.
뒤에 작성할 시 한번 연산하거나 호출된 뒤 증가하거나 감소한 값을 변수에 대입한다.

  • while문과 Math.random() 메소드를 이용해서 2개의 주사위를 던졌을 때 나오는 눈을 (눈1, 눈2) 형태로 출력하고, 눈의 합이 5가 아니면 계속 주사위를 던지고, 눈의 합이 5이면 실행을 멈추는 코드를 작성해보세요. 눈의 합이 5가 되는 조합은 (1,4), (4,1), (2,3), (3,2)입니다.
public class While {
    public static void main(String[] args) {
        while (true){
        
            System.out.println("주사위를 던집니다.");
            
            // 난수의 범위를 지정해서 변수에 대입
            int i = (int) (Math.random() * 6 )+1;
            int k = (int) (Math.random() * 6 )+1;
            
            // 두 눈의 합
            int sum = i+k;
            
            // 주사위 결과 출력
            System.out.printf("주사위 결과 : (%d,%d)\n", i, k );
            System.out.println("두 수의 합은 "+sum+"입니다." );
            
            // 만약 두 눈의 합이 5이면 중지
            if(sum == 5){
                break;
            }else {
                System.out.println("두 수의 합이 5가 아니므로 다시 던집니다..");
            }
        }
    }
}
profile
자바공부해요흑흑

0개의 댓글