결론은 출력 결과를 5로 생각한게 조금 이상하지 않나 생각이 듭니다..!
잠깐만..!! 그러나 다시 생각해 보았는데 5로 생각할수도 있을거 같습니다. 어디가 잘 못된거냐 이렇게 말씀하신다면 초기 변수 타입 설정을 잘 못하신거 같습니다. 그냥 단순하게 보면 5 / 2는 2.5인데 그값이 안나온 이유는 int / int 를해서 그런거 같습니다. int형 자료형 결과값에는 소수점 까지 연산을 하지 않기 때문인거 같아요.
int var1 = 5;
int var2 = 2;
double var3 = (var1 * 1.0) / (var2);
int var4 = (int)(var3 * var2);
System.out.println(var4);
그래서 이런식으로 위의 코드를 보면 var3부분에 int / int 가 아닌 int에 1.0을 곱해줘서 double 타입으로 전환하고 double / int를 하면 결과가 2.5가 나오게 되면서 var4의 값은 (int)(2.5 * 2) 이렇게하면 5.0의 더블형 타입을 int형으로 바꿔주면서 결과값이 5가 나오게 됩니다!
int a = 10;
int b = 20;
int z = (++a) + (b--);
System.out.println(z);
import java.lang.Math;
public class Hello {
public static void main(String[] args) {
System.out.println("시작!");
while (true) {
int a = (int)(Math.random() * 6)+1;
int b = (int)(Math.random() * 6)+1;
System.out.print("(" + a + ",");
System.out.println(b + ")");
if (a + b == 5) break;
}
System.out.println("끝!");
}
}
출력결과
Math.random 함수 : 0.0 <= double value < 1.0 의 값을 랜덤으로 출력한다.