-
항해99 2주차 JAVA 과제카테고리 없음 2022. 9. 23. 11:28
- 다음 코드를 실행하면 출력 결과로 5를 기대했는데 4가 출력되었습니다. 어디에서 잘못 작성된 것일까요?
int var1=5;
int var2=2;
double var3=var1/var2;
int var4=(int)(var3*var2);
System.out.println(var4);int 는 정수를 입력받고 double은 실수를 입력받는다.
3번째줄 double var3=var1/var2; 를 보면 var3은 자료형이 double 이지만 안에 들어가는 변수의 자료형이 int이므로 var3에는 int형 정보가 저장된다. 따라서 var3에는 5/2의 값인 2.5가 아닌 5/2의 int형 값인 2가 들어오게 된다. 그래서 var3에 2.5값이 들어가게 하기 위해서는 var3 에 들어가는 변수들의 자료형이 double이거나 var3에 들어온 변수를 double로 바꿔주는 작업을 하면 된다.
그러므로 5를 출력하기 위해서는 아래와 같이 var1,var2의 자료형을 double로 바꿔주거나
double var1=5; double var2=2; double var3=var1/var2; int var4=(int)(var3*var2); System.out.println(var4);
var3에 들어온 정보의 자료형을 double로 바꿔주는 작업을 하면 된다.
int var1=5; int var2=2; double var3=(double)var1/var2; int var4=(int)(var3*var2); System.out.println(var4);
- 다음 코드를 실행했을 때 출력 결과는 무엇입니까? (증감연산자에 대해 알아보세요!)
int x=10;
int y=20;
int z = (++x) + (y--);
System.out.println(z);증감연산자 ++과 --
++는 값을 1 증가시키고 --는 값을 1 감소시키는 연산자이다.
증감연산자는 사용된 위치에 따라 값이 변하는 순서가 바뀐다. 3번째 줄 int z = (++x) + (y--); 를 보면 x는 증감연산자가 앞에, y는 증감연산자가 뒤에 붙어있다. (++x)처럼증감연산자가 앞에 있을 경우 값을 증감시키고(x=11) 증감시킨 값(x=11)을 가져오지만 (y--)처럼 뒤에 있을 경우 기존의 값(y=20)을 가져오고 난 후 값을 증감시킨다.
따라서 위의 코드를 실행시키면 아래와 같이 계산되어 z는 31이 출력된다.
int x=10; //x=11 int y=20; //y=19 int z = (++x) + (y--); //z = 11 + 20 System.out.println(z);
- while문과 Math.random() 메소드를 이용해서 2개의 주사위를 던졌을 때 나오는 눈을 (눈1, 눈2) 형태로 출력하고, 눈의 합이 5가 아니면 계속 주사위를 던지고, 눈의 합이 5이면 실행을 멈추는 코드를 작성해보세요. 눈의 합이 5가 되는 조합은 (1,4), (4,1), (2,3), (3,2)입니다.
- 출력 예시
시작! (3,6) (2,6) (1,4) 끝!
출력 코드
int x = (int)(1+Math.random()*6); int y = (int)(1+Math.random()*6); int sum = x+y; while (sum != 5) { System.out.println("주사위1 : " + x + " 주사위2 : " + y + " 합 : " + sum); x = (int)(1+Math.random()*6); y = (int)(1+Math.random()*6); sum = x+y; } System.out.println("주사위1 : " + x + " 주사위2 : " + y + " 합 : " + sum); System.out.println("end");
math.random함수를 이용하여 x와 y에 1~6의 숫자를 입력받고 그 값을 합친다.
합친값이 5라면 x,y,z 값과 end라는 문구를 출력한다.
합친 값이 5가 아니라면 while문을 이용하여 만약 합친 값이 5가 아니라면 x,y,z의 값을 출력한 후 .x와 y에 다시 새로운 값을 입력받는 과정을 반복시킨다. 만약 합친 값이 5가 된다면 반복문을 종료하고 값을 출력한다.