1. while문과 Math.random() 메소드를 이용해서 2개의 주사위를 던졌을 때 나오는 눈을 (눈1, 눈2) 형태로 출력하고, 눈의 합이 5가 아니면 계속 주사위를 던지고, 눈의 합이 5이면 실행을 멈추는 코드를 작성해보세요. 눈의 합이 5가 되는 조합은 (1,4), (4,1), (2,3), (3,2)입니다.
public class Practice {
public static void main(String[] args) {
while (true) {
int num1 = (int) (Math.random() * 6) + 1;
int num2 = (int) (Math.random() * 6) + 1;
System.out.println("(" + num1 + ", " + num2 + ")");
if ((num1 + num2) == 5) {
break;
}
}
}
}
(1, 3)
(3, 4)
(4, 3)
(6, 6)
(3, 1)
(6, 1)
(4, 6)
(5, 3)
(4, 1)
// while문은 조건식이 true일 경우에 계속해서 반복합니다. 조건식에는 비교 또는 논리 연산식이 주로 오는데
조건식이 false가 되면 반복 행위를 멈추고 while문을 종료합니다.
//Math.random문은 임의로 정수를 뽑는 방법입니다. 여기서 (int)(Math.random()) 은 int 타입으로 강제 타입
변환 한다는 뜻입니다.
//(int)(Math.random() * 6) + 1; 에서 6은 최대값이고 1은 최소값입니다.
//if ((num1 + num2) == 5 에서 만약 num1과 num2의 합이 5이면 if문 동작을 멈춥니다.
2.다음 코드를 실행하면 출력 결과로 5를 기대했는데 4가 출력되었습니다. 어디에서 잘못 작성된 것일까요?
int var1=5;
int var2=2;
double var3=var1/var2;
int var4=(int)(var3*var2);
System.out.println(var4);
//double은 소수점이 있는 실수타입입니다.
double var3=var1/var2 에서 5 나누기 2는 = 2.5 가됩니다.
//int는 정수 타입입니다. 즉, -2,1467,483,648 ~ 2,146,683,647... 의 값을 허용합니다.
int var4 = (int)(var3 * var2)에서 (int)로 강제변환이 되어 소수점이 없어진 2로 변환됩니다.
//즉, 여기서 double을 int로 바꾸면 됩니다. 2 * 2 = 4
3.다음 코드를 실행했을 때 출력 결과는 무엇입니까? (증감연산자에 대해 알아보세요!)
<개념 설명>
++ 피연산자(x) : 다른 연산을 수행하기 전에 x의 값을 1 증가시킴
--피연산자(x) : 다른 연산을 수행하기 전에 x의 값을 1 감소시킴
피연산자(x) ++ : 다른 연산을 수행한 후에 x의 값을 1 증가시킴
피연산자(x)-- : 다른 연산을 수행한 후에 x의 값을 1 감소시킴
int x = 1;
int y = 1;
int result1 = ++x + 10;
int result2 = y++ + 10;
------
result1는 1+1을 더해서 10을 더합니다. 그래서 12가 됩니다.
result2는 1+10을 더해서 result는 11이 됩니다. 그 후에 y+1을 더합니다.
int x=10;
int y=20;
int z = (++x) + (y--);
System.out.println(z);
답 : 31
// y--는 (y값)-1+20 = 20가 되고 , 그 후에 y값인 -1이 되어 19이 됩니다.
// ++x는 (x값)+1+1 =2로 먼저 더하고, 2+10 = 12가 됩니다.
// 결국 12 + 19는 31입니다.
'Java' 카테고리의 다른 글
Java - 필드 (0) | 2022.11.23 |
---|---|
Java - 객체 지향 프로그래밍 (0) | 2022.11.23 |
Java - 열거 타입 (0) | 2022.11.12 |
Java - 배열 (0) | 2022.11.11 |
Java - 참조 타입과 참조 변수 (0) | 2022.11.11 |