관리 메뉴

나구리의 개발공부기록

chapter3 - 연산자 확인문제, / 이것이 자바다(개정판) 본문

책 공부/이것이자바다 개정판(도서)

chapter3 - 연산자 확인문제, / 이것이 자바다(개정판)

소소한나구리 2024. 2. 12. 23:59

이것이 자바다 개정판(신용권, 임경균 지음) - java 8 ~ 17대응


챕터3 - 연산자

 

Q1. 다음 코드를 실행했을 때 출력 결과를 작성 - 31

int x = 10;
int y = 20;
int z = (++x) + (y--);
System.out.println(z);
여러 연산자가 포함되어 있는 연산식에서 증감 연산자가 변수 앞에 있으면 변수를 증가 및 감소 후 다른 연산을 수행
증감 연산자가 변수 뒤에 있으면 모든 연산을 끝낸 후에 변수를 증가 및 감소

int z = (++x) + (y--);
/* int z = 11 + 20--;
   31 = 11 + 20--;
   31 = 11 + 19; */
z = 31, y = 19

 

Q2. 다음 코드를 실행했을 때 출력 결과를 작성 - 가 (문자열 출력)

int score = 85;
String result = (!(score>90))? "가" : "나";
System.out.println(result);
3항 연산자
A > B ? C : D // A가 B보다 크면 C를, 아니면 D를 출력
(!(85 > 90))? "가" : "나" // 85가 90보다 작지 않으면 "가"를 출력

 

Q3. 534자루의 연필을 30명의 학생들에게 똑같은 개수로 나누어 줄 때 1인당 몇 개를 가질 수 있고, 마지막에 몇 개가 남는지를 구하는 코드, ( ) 에 들어갈 알맞는 코드를 작성

  • pencils / students
  • pencils % students
int pencils = 534;
int students = 50;

// 학생 한 명이 가지는 연필 수
int pencilsPerStudent = ( );
System.out.println(pencilsPerStudent);

// 남은 연필 수
int pencilsLeft = ( );
System.out.println(pencilsLest);
pencils / students // 몫 연산
pencils % students // 나머지 연산

 

Q4. 다음은 십의 자리 이하를 버리는 코드, 변수 value의 값이 356이라면 300이 나올 수 있도록 ( )에 알맞는 코드를 작성(산술 연산자만 사용) - value / 100 * 100

int value = 356;
System.out.println();
356 / 100 = 3
3 * 100 = 300 // 연산만으로 십의자리 이하를 0으로 만듦

 

Q5. 다음 코드는 사다리꼴의 넓이를 구하는 코드, 정확히 소수 자릿수가 나올 수 있도록 ( )에 들어갈 수 있는 코드를 모두 선택 - 1,2,3,4

int lengthTop = 5;
int lengthBottom = 10;
int height = 7;
double area = ( );
System.out.println(area);
  1. (lengthTop+lengthBottom) * height / 2.0
  2. (lengthTop+lengthBottom) * height * 1.0 / 2
  3. (double) (lengthTop+lengthBottom) * height / 2
  4. (double) ((lengthTop+lengthBottom) * height / 2 )
피연산자 중 하나가 실수 타입이면 결과도 실수 타입이 되므로 소수점 자리까지 계산됨
4번의 경우는 ()안의 연산식이 int타입으로 계산이 된 후 double타입으로 강제 형변환이 되어버림 -> 52.0

 

Q6. 다음 코드는 비교 연산자와 논리 연산자의 복합 연산식, 연산식의 출력결과를 작성 - true, false

int x = 10;
int y= 5;
System.out.println( ( x > 7 ) && ( y <= 5 ) );
System.out.printin( (x % 3 == 2) || (y % 2 != 1) );

 

// 10은 7보다 크고 5는 5보다 작거나 같다, 둘다 만족해야 true
(( 10 > 7 ) && ( 5 <= 5 ));

 // 10을 3으로 나누면 나머지가 2가 나오거나,
 // 5를 2로 나누면 나머지가 1이 나오지 않는다, 둘중에 하나만 만족해도 true 지만 둘다 만족하지 않음
((x % 3 == 2) || (y % 2 != 1));

 

Q7. 다음은 % 연산을 수행한 결과값에 10을 더하는 코드, NaN값을 검사해서 올바른 결과가 출력될 수 있도록 ( )에 들어갈 코드를 작성
 - Double.inNaN(z)

double x = 5.0;
double y = 0.0;
double z = 5 % y;
if (         ) {
 System.out.println("0.0으로 나눌 수 없습니다.");
 } else {
 double result = z + 10;
 System.out.println("결과: " + result);
}
Double클래스의 isNaN();메서드에 연산 결과가 NaN이 나오는 연산식을 매개변수에 대입하여 코드를 완성

if(연산식의 결과가 NaN 이면) -> 작성된 출력 코드를 실행
else(그렇지 않으면) z + 10의 연산식을 출력