1. 출력 결과를 5로 기대했는데 4가 출력된 이유
public class Exam1 {
public static void main(String[] args) {
int var1 = 5;
int var2 = 2;
//자바 연산 에서 일반적인 계산과 달리 분수/소수 계산을 하지 않고 몫에 해당하는 값만 반환함
double var3 = var1/var2; // 값은 2.0
// var3 = 2.0, var2 = 2 -> 2.0 * 2 = 4.0 -> 형변환(casting) -> (int)(4.0) = 4
int var4 = (int)(var3*var2); //값은 4
System.out.println(var4); // 4가 출력
}
}
2. 다음 코드를 실행했을 때 출력 결과는 무엇입니까?
public class Exam02 {
public static void main(String[] args){
int x = 10;
int y = 20;
//증감연산자가 앞에있으면 증감연산을 먼저 수행하고 그 값으로 다시 연산(전위 연산)
//증감연산자가 뒤에있으면 변수에 기존값으로 연산후 마지막에 증감연산 수행(후위 연산)
int z = (++x) + (y--); //z = x(11) + y(20)
System.out.println(z); // z = 31
System.out.println(y); // y = 19
}
}
/* 기존에 증감연산자의 개념을 알고있어서
()로 묶여 있으니까 y--가 = 연산자보다 먼저 될 것 같았다.
하지만 이 줄의 연산에서 y-1를 모든 연산이 끝나고 난 뒤에 가장 꼴찌로 한다.
기존에 수학적으로 생각하기 보단 언어의 일관성을 유지하기 위해서
그냥 java를 만든사람이 그렇게 하기로 약속한것이라고 생각하면 될것 같다고 정리했다.
*후위연산자는 괄호 연산자마저 가장 나중으로 미루어버린다 *
*/
3. while문과 Math.random() 메소드를 이용해서 2개의 주사위를 던졌을 때 나오는 눈을 (눈1, 눈2) 형태로 출력하고,
눈의 합이 5가 아니면 계속 주사위를 던지고, 눈의 합이 5이면 실행을 멈추는 코드를 작성해보세요.
public class Exam03 {
public static void main(String[] args){
System.out.println("시작!");
while(true){
//Math.random() ->0.xxx~0.9xxx
//6을 곱했을때 가장 작은수는 0, 가장 큰수는 5기때문에 1을 더해주면 1~6사이의정수가 됨
int num1 = (int)(Math.random()*6) + 1;
int num2 = (int)(Math.random()*6) + 1;
System.out.println((num1+ "," + num2));
if(num1 + num2 == 5){
break;
}
}
System.out.println("종료!");
}
}
'java > 과제' 카테고리의 다른 글
스프링 입문 주차 과제1 (0) | 2022.10.13 |
---|
댓글