[Java] 오답

하채린·2021년 6월 20일
0

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

public class Exercise3_4 {

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

	}

numOfApples/sizeOfBucket +
(numOfApples%sizeOfBucket > 0 ? 1 : 0);

사과의 개수(numOfApples) / 바구니의 크기(sizeOfBucket)를 해주면 바구니의 수(numOfBucket)를 구할 수 있다.
계산하면 정수간의 나눗셈이기 때문에 12가 나온다.
그리고 사과의 개수(numOfApples)를 바구니의 크기(sizeOfBucket)로 나눴을 때 나머지가 있으면 하나의 바구니가 더 필요하다.
%를 이용하여 나머지가 발생하는지 확인하고, 나머지가 발생하면 바구니의 개수(numOfBucket)에 1을 더해줘야 한다.

해서, 나머지가 1 발생하기 때문에 1을 더해줘서 필요한 바구니의 수는 13이 된다.


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

public class Exercise3_5 {

	public static void main(String[] args) {
		int num = 10;
		System.out.println( /* (1) */ );

	}

(num > 0 ? "양수" : (num < 0 ? "음수" : "0"));

삼항연산자에 삼항연산자를 포함시키면 3가지 경우의 수를 처리할 수 있다.
num의 값이 0보다 크면, '양수'를 출력하고 끝나지만, num의 값이 0보다 작거나 같으면 괄호안의 삼항연산자가 수행된다.
여기서 num의 값이 0보다 작으면 '음수'가 출력되고, 그렇지 않으면(num 값이 0이면) '0'이 출력된다.

위 코드에서 num은 10이기 때문에 양수가 출력된다.


Q. 아래는 화씨(Fahrenheit)를 섭씨(Celcius)로 변환하는 코드이다.
변환공식이 'C =5/9 x (F - 32)'라고 할 때, (1)에 알맞은 코드를 넣으시오.
단, 변환 결과값은 소수점 셋째자리에서 반올림해야 한다.
(Math.round()를 사용하지 않고 처리할 것)

public class Exercise3_6 {

	public static void main(String[] args) {
		int fahrenheit = 100;
		float celcius = ( /* (1) */ )
        
		System.out.println("Fahrenheit:"+fahrenheit);
		System.out.println("Celcius:"+celcius);

	}

(int)((5/9f * (fahrenheit - 32))곱하기100 + 0.5) / 100f

5/9는 0이기 때문에 두 피연산자 중 어느 한 쪽을 반드시 실수형으로 바꿔줘야 한다.
정수형 9 대신 float형 9f를 사용하였다.
그리고 소수점 셋째자리에서 반올림 하려면 다음의 과정을 거쳐야한다.
1. 값에 100을 곱한다.
37.77778 * 100
2. 1의 결과에 0.5를 더한다.
3777.778 + 0.5 → 3778.278
3. 2의 결과를 int타입으로 변환한다.
(int)3778,278 → 3778
4. 3의 결과를 100f로 나눈다. (100으로 나누면 소수점 아래의 값을 잃는다.)
3778 / 100f → 37.78

references


마지막 문제는 완벽하게 이해하지 못했다.
이해할 수 있도록 여러번 봐야겠다..

profile
developer d의 왼쪽 커서쯤 🏃‍♂️🏃‍♀️

0개의 댓글