[항해99] Java 기초 과제(feat. 나의 언어로 정리해보자)

rara_kim·2022년 11월 18일
0

항해99

목록 보기
8/18

Java 기초 과제

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

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

int 타입의 경우 나누기/를 하는 경우 그 값은 소수점 아래의 값은 버려지고 정수값이 반환된다.
따라서 위의 코드에서 var3의 값은 2.5가 아닌 2가 된다.
만약 소수점 아래의 값까지 원하는 경우에는 아래와 같이 var1 혹은 var2 둘 중 하나는 double타입으로 변환해주어야 한다.
double 타입으로 변환시킨 다음 코드를 실행하면 기대대로 출력 결과로 5를 얻을 수 있다.

double var3 = (double)var1 / var2;    //var3 = 2.5
double var3 = var1 / (double) var3;   //var3 = 2.5

2️⃣다음 코드를 실행했을 때 출력 결과는 무엇입니까? (증감연산자에 대해 알아보세요!)

int x=10;
int y=20;
int z = (++x) + (y--);   //x= 11, y=20
System.out.println(z);   //z= 31, y=19

증감연산자는 변수의 값을 1증가(++) 시키거나 1감소(--)시키는 연산자를 말하며, boolean 타입을 제외한 모든 기본 타입의 피연산자에게 사용할 수 있다.

증감연산자가 피연산자의 뒤에 붙은 경우에는 일단 값을 그대로 반환하고 다른 연산을 수행한 후에 피연산자의 값을 1을 증가(++)시키거나, 1을 감소시켜(--) 그 결과를 다시 피연산자에 저장한다.
반대로 연산자가 앞에 오는 경우에는 다른 연산을 수행하기 전에 바로 증가(++) 혹은 감소(--)시켜 피연산자에 값을 저장한다.

💡따라서, 위의 코드를 실행시켰을 경우 x는 11이 되고 y는 20이 되기 때문에, z는 31이 된다.
    그리고 변수z에 값을 저장 후 y를 출력해보면 y의 값이 19가 된 것을 알 수 있다.


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

  • 출력 예시
시작!
(3, 6)
(2, 6)
(1, 4)!
  • 나의 코드
public class BasicHomework {
	public static void main(String[] args) {
    
		System.out.println("시작!");
		
        while (true) {
        	//1부터 6까지 랜덤으로 뽑은 숫자를 num1, num2에 저장
        	int num1 = (int) (Math.random() * 6) + 1;
			int num2 = (int) (Math.random() * 6) + 1;        
			
            if (num1 + num2 != 5) {                  //두 변수의 합이 5가 아닌 경우 실행
				System.out.printf("(%d, %d)\n", num1, num2);
			} else {                                 //그 외의 경우, 두 변수의 합이 5인 경우 실행
				System.out.printf("(%d, %d)\n", num1, num2);
				System.out.println("끝!");
				break;                
			}
		}
	}
}

GitHub: 자바 기초과제 코드

profile
느리더라도 꾸준하게

0개의 댓글