※ 이 게시물은 [윤성우의 열혈 Java 프로그래밍] 인터넷 강의를 듣고 공부한 내용을 정리하여 쓴 글입니다.
자세한 내용은 강의를 참고하세요.
2단원과 3단원은 연습문제가 없기 때문에 포스팅하지 않았습니다.
ㆍ4단원 1번째 연습문제입니다. (p.91)
ㆍ연산자의 활용과 연산의 특성 파악
- 문제 1. int형 변수 num1, num2, num3에 각각 10, 20, 30이 저장된 상태에서 다음 문장을 실행하면
각각 얼마가 저장 되겠는가?
num1 = num2 = num3;
sol) 최종적으로 모두 num3의 값인 30이 저장된다.
이것을 증명하기 위해서 다음과 같이 코드를 작성했습니다.
// 문제 1
int num1 = 10;
int num2 = 20;
int num3 = 30;
num1 = num2 = num3;
System.out.println(num1 + " " + num2 + " " + num3);
실행 결과로는 30 30 30이 출력되었습니다.
- 문제 2. 예제 SCE.java의 실행 결과를 보면 변수 num2의 값이 증가하지 않았음을 알 수 있다.
그렇다면 예제를 어떻게 수정해야 num2의 값이 증가하겠는가?
sol) 예제에서는 && 연산의 앞이 False 이므로 뒤의 문장이 실행이 되지 않았고 또, || 연산의 앞이 True 이므로
뒤의 문장이 실행되지 않았습니다.
이것을 연산자 앞, 뒤 모두 실행되도록 다음과 같이 코드를 작성했습니다.
int num4 = 0;
int num5 = 0;
boolean result2;
result2 = ((num4 += 10) < 0) || ((num5 += 10) > 0);
System.out.println("num4 = " + num4);
System.out.println("num5 = " + num5);
result2 = ((num4 += 10) > 0) && ((num5 += 10) > 0);
System.out.println("num4 = " + num4);
System.out.println("num5 = " + num5);
이렇게 작성하면 첫 번째 || 연산에서 num4에 10이 저장되고, 0보다 크므로 False이고, 뒤의 num5에는 10이
저장되고 0보다 크므로 True가 되는데, || 연산에서는 하나만 True여도 True로 판단되므로
num4, num5에 모두 10이 출력됩니다.
두 번째 && 연산에서는 마찬가지로 num4에 10을 더해 20이 저장되고, 0보다 크므로 True이고, 뒤의 num5도
10이 더해져 20이 저장되고 0보다 크므로 True가 됩니다. && 연산에서 두 연산 모두 True 이므로
num4, num5에 모두 20이 출력됩니다.
실행 결과로는 num4 = 10, num5 = 10과 num4 = 20, num5 = 20 이 출력되었습니다.
- 문제 3. 식 {(25 x 5) + (36 - 4) - 72} / 5의 계산 결과를 출력하는 프로그램을 작성해보자.
sol) 단순히 수식을 출력하도록 코드를 작성했습니다.
System.out.println(((25 * 5) + (36 - 4) - 72)/5);
실행 결과로는 17이 출력되었고, 수식이 잘 계산된 것을 확인할 수 있습니다.
- 문제 4. 다음 계산 결과를 출력하는 프로그램을 작성하되, 덧셈 연산의 횟수를 최소화하여 작성해보자.
3 + 6, 3 + 6 + 9, 3 + 6 + 9 + 12
sol) 이미 결과를 알고 있기 때문에 곱셈을 사용해보았습니다.
System.out.println((3 * 3));
System.out.println((3 * 6));
System.out.println((3 * 10));
- 문제 5. 변수 n1, n2, n3이 다음과 같을 때 n1 > n2 > n3 이면 True, 아니면 False를 출력하는 프로그램을 작성해보자.
n1 = {(25 + 5) + (36 / 4) - 72} * 5
n2 = {(25 x 5) + (36 - 4) +71} / 4
n3 = (128 / 4) x 2
sol) 우선 n1, n2, n3에 위의 값을 저장하고, Boolean으로 변수를 선언한 뒤, && 연산을 이용해 모든 조건이 True
인 경우에만 True를 반환하도록 하였습니다.
int n1 = ((25 + 5) + (36 / 4) - 72) * 5; // -165
int n2 = ((25 * 5) + (36 - 4) + 71) / 4; // 5.1818182
int n3 = (128 / 4) * 2; // 64
boolean result5;
result5 = ((n1 > n2) && (n2 > n3) && (n1 > n3));
실행 결과로는 연산의 결과가 -165 > 5.1818182 > 64 는 모두 False이므로 False가 출력되었습니다.
※ 이 게시물은 참고용이며, 정답이 아닙니다. 정답은 오렌지 미디어 홈페이지를 참고해주세요.