항해99 Chap02 Java 과제

Ada·2022년 9월 23일
0

항해TOL

목록 보기
3/63
  • 다음 코드를 실행하면 출력 결과로 5를 기대했는데 4가 출력되었습니다. 어디에서 잘못 작성된 것일까요?
    int var1=5;
    int var2=2;
    double var3=var1/var2; // var3 = 2
    int var4=(int)(var3*var2); // var4 = 2*2 = 4
    System.out.println(var4);
    
    나누기를 실행했을 때 소수점 아래 값까지 리턴 받으려면 
    두 개의 숫자 중 적어도 하나는 소수형태여야 합니다. 
    그래서 double var1 = 5.0;
    또는 double var2 = 2.0;
    라는 형태로 나타내주어야 합니다.
    참고 자료 : https://mainia.tistory.com/2020
  • 다음 코드를 실행했을 때 출력 결과는 무엇입니까? (증감연산자에 대해 알아보세요!)
    int x=10;
    int y=20;
    int z = (++x) + (y--);
    System.out.println(z);
    
    ++x 는 ++를 먼저 진행해서 11이 되고,
    그 뒤의 + (y--)--+ 뒤에 진행되기 때문에 20이 됩니다.
    11 + 20 = 30 이기 때문에 z = 31 입니다.

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

    • 출력 예시

      시작!
      (3,6)
      (2,6)
      (1,4)
      끝!
  • 제가 짠 코드입니다.

     class VarEx {
    
       public static void main(String[] args) {
           System.out.println("시작!");
           
       // 메소드 밖에서 변수 정의해서 전역 변수로 사용
       	
           int i = 5;
           int a = 0;
           int b = 0;
    	//  주사위의 값이 5가 아닐때 계속 주사위를 굴리도록 랜덤함수 사용
           while ( a + b != i ) {
               a = (int)(Math.random()* 6) + 1 ; // 1부터 6까지중 랜덤한 정수(int)
               b = (int)(Math.random()* 6) + 1 ;
    	// 주사위 값의 합이 5가 아닐때 출력
               if (a + b != i) {
                   System.out.printf("(%d, %d)", a, b);
                   System.out.println("");
               }
       // 주사위 값의 합이 5일떄 마지막으로 출력하고 줄 바꿈 한 뒤 "끝!" 출력        
               else if (a + b == i){
                   System.out.printf("(%d, %d)", a, b);
                   System.out.println("");
                   System.out.println("끝!");
                   break;
               }
           }
       }
    }

profile
백엔드 프로그래머

0개의 댓글