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이다 증감 연산자 ++, -- 는 변수 앞에 붙느냐 뒤에 붙느냐에 따라 의미가 다르다. 앞에 붙으면 증가하거나 감소한 값을 변수에 바로 대입한다.
뒤에 작성할 시 한번 연산하거나 호출된 뒤 증가하거나 감소한 값을 변수에 대입한다.
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가 아니므로 다시 던집니다..");
}
}
}
}