-
이것이 자바다 확인문제 (3장 연산자)JAVA 2018. 10. 15. 19:37
1. 연산자와 연산식에 대한 설명 중 틀린 것은 무엇입니까?
1) 연산자는 피연산자의 수에 따라 단항, 이항, 삼항 연산자로 구분된다.
2) 비교 연산자와 논리 연산자의 산출 타입은 boolean(true/false)이다.
3) 연산식은 하나 이상의 값을 산출할 수도 있다.
4) 하나의 값이올 수 있는 자리라면 연산식도 올 수 있다.
답: 3)
연산식은 반드시 하나의 값을 산출한다. 연산자 수가 아무리 많아도 두 개 이상의 값을 산출하는 연산식은 없다.(p.65)
2. 다음 코드를 실행했을 때 출력 결과는 무엇입니까?
12345678public class Exercise02 {public static void main(String[] args) {int x = 10;int y = 20;int z = (++x) + (y--);System.out.println(z);}}cs 답: 31
p.70
++피연산자 : 다른 연산을 수행하기전에 피연산자의 값을 1 증가시킴
-- 피연산자 : 다른 연산을 수행하기 전에 피연산자의 값을 1 감소시킴
피연산자++ : 다른 연산을 수행한 후에 피연산자의 값을 1 증가시킴
피연산자-- : 다른 연산을 수행한 후에 피연산자의 값을 1 감소시킴
=> line5 : (10+1) + 20
3. 다음 코드를 실행했을 때 출력 결과는 무엇입니까?
1234567public class Exercise03 {public static void main(String[] args) {int score = 85;String result = (!(score>90)) ? "가" : "나";System.out.println(result);}}cs 답: 가
p.73
논리 부정 연산자 (!)
!피연산자 : 피연산자가 true이면 false 값 산출. 피연산자가 false이면 true 값 산출
p.100
삼항 연산자
조건식(피연산자1) ? 피연산자2 : 피연산자3
조건식이 true : 연산 결과는 피연산자2
조건식이 false : 연산 결과는 피연산자3
=> line4
score>90 == false
!(score>90) == true
4. 534자루의 연필을 30명의 학생들에게 똑같은 개수로 나누어 줄 때 학생당 몇 개를 가질 수 있고, 최종적으로 몇 개가 남는지를 구하는 코드입니다. ( #1 )과 ( #2 )에 들어갈 알맞은 코드를 작성하세요.
1234567891011121314public class Exercise04 {public static void main(String[] args) {int pencils = 534;int students = 30;// 학생 한 명이 가지는 연필 수int pencilsPerStudent = ( #1 );System.out.println(pencilsPerStudent);// 남은 연필 수int pencilsLeft = ( #2 );System.out.println(pencilsLeft);}}cs 답
#1 : pencils / students
#2 : pencils % students
5. 다음은 십의 자리 이하를 버리는 코드입니다. 변수 value의 값이 356이라면 300이 나올 수 있도록 ( #1 )에 알맞은 코드를 작성하세요(산술 연산자만 사용하세요).
123456public class Exercise05 {public static void main(String[] args) {int value = 356;System.out.println( #1 );}}cs 답: value - (value % 300)
6. 다음 코드는 사다리꼴의 넓이를 구하는 코드입니다. 정확히 소수자릿수가 나올 수 있도록 ( #1 )에 알맞은 코드를 작성하세요.
123456789public class Exercise06 {public static void main(String[] args) {int lengthTop = 5;int lengthBottom = 10;int height = 7;double area = ( #1 );System.out.println(area);}}cs 답: ((double) lengthTop + lengthBottom) / 2 * 7
* 52.5
정확한 소수자릿수까지 산출 결과로 얻고 싶다면 피연산자 중 최소한 하나는 실수 타입이어야 한다. 따라서 1.0을 곱하여 실수 타입으로 만든 후 산술 연산을 하거나 하나의 피연산자를 double 타입으로 강제 타입 변환한 후 산술 연산을 실행한다. (p.77~78)
7. 다음 코드는 비교 연산자와 논리 연산자의 복합 연산식입니다. 연산식의 출력 결과를 괄호( ) 속에 넣으세요.
123456789public class Exercise07 {public static void main(String[] args) {int x = 10;int y = 5;System.out.println( (x>7) && (y<=5) ); ( )System.out.println( (x%3 == 2) || (y%2 != 1) ); ( )}}cs 답: true, false
p.92
논리연산자
&& : 피연산자 모두가 true일 경우에만 연산 결과는 true
|| : 피연산자 중 하나만 true이면 연산 결과는 true
line6 : (x>7) == true, (y<=5)== true
line7 : (x%3 == 2) == false, (y%2 != 1) == false
8. 다음은 %연산을 수행한 결과값에 10을 더하는 코드입니다. NaN값을 검사해서 올바른 결과가 출력될 수 있도록 ( #1 )에 들어갈 NaN을 검사하는 코드를 작성하세요.
123456789101112131415public class Exercise08 {public static void main(String[] args) {double x = 5.0;double y = 0.0;double z = x % y;if( #1 ) {System.out.println("0.0으로 나눌 수 없습니다.");} else {double result = z + 10;System.out.println("결과: " + result);}}}cs 답: Double.isNaN(z)
좌측피연산자가 정수 타입인 경우 나누는 수인 우측 피연산자는 0을 사용할 수 없다. 만일 0으로 나누면 컴파일은 정상적으로 되지만 실행 시 ArithmeticException이 발생한다.
실수 타입인 0.0 또는 0.0f로 나누면 ArithmeticException이 발생하지 않고, / 연산의 결과는 Infinity 값을 가지며, % 연산의 결과는 NaN(Not a Number)을 가진다.
프로그램 코드에서 /와 % 연산의 결과가 Infinity 또는 NaN인지 확인하려면 Double.isInfinite() 와 Double.isNaN() 메소드를 이용하면 된다. 이 메소드들은 double 타입의 값을 매개값으로 받아서 이 값이 Infinity 또는 NaN이라면 true를 리턴하고, 그렇지 않다면 false를 리턴한다. (p.83~84)
'JAVA' 카테고리의 다른 글
이것이 자바다 확인문제 (6장 클래스) (0) 2018.11.11 이것이 자바다 확인문제 (5장 참조 타입) (0) 2018.10.20 이것이 자바다 확인문제 (4장 조건문과 반복문) (1) 2018.10.17 이것이 자바다 확인문제 (2장 변수와 타입) (2) 2018.10.14 이것이 자바다 확인문제 (1장 자바 시작하기) (0) 2018.10.14