본문 바로가기
개념

[JAVA의 정석] Chapter03_연습문제

by cook_code 2024. 9. 19.
반응형

 

[3-1] 다음 연산의 결과를 적으시오.

public class Exercise3_1 {
	public static void main(String[] args) {
		int x=2;
		int y=5;
		char c = 'A';
		System.out.println(1+x<<33);
		System.out.println(y>=5||x<0&&x>2);
		System.out.println(y+=10-x++);
		System.out.println(x+=2);
		System.out.println(!('A'<=c&&c<='Z'));
		System.out.println('C'-c);
		System.out.println('5'-'0');
		System.out.println(c+1);
		System.out.println(++c);
		System.out.println(c++);
		System.out.println(c);
	}
}

답:

6

true

13

5

false

2

5

66

B

B

C

참고: 시프트 연산(대상 숫자를 2진수로 나타낸 후 계산 후 그 결과를 다시 10진수로 변환)


[3-2] 다음 연산의 결과를 적으시오.

아래의 코드는 사과를 담는데 필요한 바구니(버켓)의 수를 구하는 코드이다 만일 사과의 수가 123개이고, 하나의 바구니에는 10개의 사과를 담을 수 있다면, 13개의 바구니가 필요할 것이다. (1)에 알맞은 코드를 넣으시오.

답: 13

public class Exercise3_2 {
	public static void main(String[] args) {
		int numOfApples=123;
		int sizeOfBucket=10;
		int numOfBucket=numOfApples/sizeOfBucket + (numOfApples%sizeOfBucket==0?0:1);
		System.out.println(" 필요한 바구니의 수 :"+numOfBucket);
	}
}

[3-3] 아래는 변수 num의 값에 따라 '양수', '음수', '0'을 출력하는 코드이다. 삼항 연산자를 이용헤서 (1)에 알맞은 코드를 넣으시오.

답:

public class Exercise3_3 {
	public static void main(String[] args) {
		int num=10;
		System.out.println(num>0?"양수":num<0?"음수":0);
	}
}

[3-4] 아래는 변수 num의 값 중에서 백의 자리 이하를 버리는 코드이다. 만일 변수 num의 값이 '456'이라면 '400'이 되고, '111'이라면 '100'이 된다. (1)에 알맞은 코드를 넣으시오.

답:

public class Exercise3_4 {
	public static void main(String[] args) {
		int num=111;
		System.out.println(num/100*100);
	}
}

[3-5] 아래는 변수 num의 값 중에서 일의 자리를 1로 바꾸는 코드이다. 만일 변수 num의 값이 333이라면 331이 되고, 777이라면 771이 된다. (1)에 알맞은 코드를 넣으시오.

답:

public class Exercise3_5 {
	public static void main(String[] args) {
		int num=333;
		System.out.println(num/100 *100 + num/100*10 + 1);
	}
}

[3-6] 아래는 변수 num의 값보다 크면서도 가장 가까운 10의 배수에서 변수 num의 값을 뺀 나머지를 구하는 코드이다. 예를 들어, 24의 가장 크면서도 가장 가까운 10의 배수는 30이다. 19의 경우 20이고, 81의 경우 90이 된다. 30에서 24를 뺀 나머지는 6이기 때문에 변수 num의 값이 24라면 6을 결과로 얻어야 한다. (1)에 알맞은 코드를 넣으시오.

답:

public class Exercise3_6 {
	public static void main(String[] args) {
		int num=24;
		System.out.println((num/10*10)+10-num);
	}
}

[3-7] 아래는 화씨(Fahrenheit)를 섭씨(Celcius)로 변환하는 코드이다. 변환공식이 'C =

5/9 × (F - 32)'라고 할 때, (1)에 알맞은 코드를 넣으시오. 단, 변환 결과값은 소수점

셋째자리에서 반올림해야한다. (Math.round()를 사용하지 않고 처리할 것)

답:

public class Exercise3_7 {
	public static void main(String[] args) {
		int fahrenheit = 100;
		float celcius = (int)((5/9f * (fahrenheit - 32))*100 + 0.5) / 100f;
		
		System.out.println("Fahrenheit:"+fahrenheit);
		System.out.println("Celcius:"+celcius);
	}
}

[3-3] 아래 코드의 문제점을 수정해서 실행결과와 같은 결과를 얻도록 하시오.

답:

public class Exercise3_8 {
	public static void main(String[] args) {
		byte a=10;
		byte b=20;
		int c=a+b;
		char ch='A';
		ch= (char) (ch+2);
		float f=3/2 + (float) 1/2;
		long l= (long) 3000*3000*3000;
		float f2=0.1f;
		double d=0.1;
		boolean result= (float) d==f2;

		System.out.println("c="+c);
		System.out.println("ch="+ch);
		System.out.println("f="+f);
		System.out.println("l="+l);
		System.out.println(f2);
		System.out.println(d);
		System.out.println("result="+result);
	}
}

[실행결과]
c=30
ch=C
f=1.5
l=27000000000
0.1
0.1
result=true

[3-9] 다음은 문자형 변수 ch가 영문자(대문자 또는 소문자)이거나 숫자일 때만 변수 b의 갑이 true가 되도록 하는 코드이다. (1)에 알맞은 코드를 넣으시오.

답:

public class Exercise3_9 {
	public static void main(String[] args) {
	
		char ch='z';

		// 조건식 'a' <= ch && ch <= 'z'는 ch가 소문자 알파벳(a부터 z까지)인지를 확인
		// 조건식 'A' <= ch && ch <= 'Z'는 ch가 대문자 알파벳(A부터 Z까지)인지를 확인
		// 조건식 '0' <= ch && ch <= '9'는 ch가 숫자(0부터 9까지)인지를 확인
		// 10부터는 두 자리 숫자라 단일 문자로 취급되지 않음
		boolean b = ('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z') || ('0' <= ch && ch <='9');
		System.out.println(b);
	}
}

[3-10] 다음은 대문자를 소문자로 변경하는 코드인데, 문자 ch에 저장된 문자가 대문자인 경우에만 소문자로 변경한다. 문자코드는 소문자가 대문자보다 32만큼 더 크다. 예를들어 'A'의 코드는 65이고 'a'의 코드는 97이다 (1)~(2)에 알맞은 코드를 넣으시오.

답:

// 방법1
public class Exercise3_10 {
	public static void main(String[] args) {

		char ch = 'A';
		char lowerCase = (Character.isUpperCase(ch)) ? (Character.toLowerCase(ch)) : ch;
		System.out.println("ch:"+ch);
		System.out.println("ch to lowerCase:"+lowerCase);
	}
}

// 방법2
class Exercise3_10_2 {
	public static void main(String[] args) {

		char ch = 'A';
		char lowerCase = (ch < 65) ? (char) (ch - 32) : (char) (ch + 32);
		System.out.println("ch:"+ch);
		System.out.println("ch to lowerCase:"+lowerCase);
	}
}
반응형

'개념' 카테고리의 다른 글

[JAVA의 정석] Chapter04_연습문제  (0) 2024.09.19
[JAVA의 정석] Chapter02_연습문제  (0) 2024.09.19
[JAVA의 정석] Chapter16  (4) 2024.09.08
[JAVA의 정석] Chapter15  (0) 2024.09.08
[JAVA의 정석] Chapter14  (2) 2024.09.08