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
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, 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;
}
}
}
}