/*

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

[연습문제] /ch3/Exercise3_1.java

*/


class Exercise3_1 {

	public static void main(String[] args) {

		int x = 2;

		int y = 5;

		char c = 'A'; // 'A' 65 의 문자코드는

		System.out.println(1 + x << 33);	//덧셈먼저(3) 시프트(int 32bit)는 2의n제곱* 

		System.out.println(y >= 5 || x < 0 && x > 2);//true

		System.out.println(y += 10 - x++);	//y = 5+10-2 = 13

		System.out.println(x+=2);			//x = 3+2

		System.out.println( !('A' <= c && c <='Z') );//!(true&&true) 대문자인지 판별

		System.out.println('C'-c);	//c는 'A'를 담고있고 int로 표현하면 67-65 = 2

		System.out.println('5'-'0');//0에서 5까지의 값 차이

		System.out.println(c+1);	//c에 저장된 'A'(65)의 값을 불러온후 1을 더함

		System.out.println(++c);	//값 증가 후에 명령 실행

		System.out.println(c++);	//명령 실행 후에 값 증가

		System.out.println(c);		//윗줄에서 증가된 값이 보여지게 됨

	}

}

/*

[3-2] 아래의 코드는 사과를 담는데 필요한 바구니 버켓 의 수를 구하는 코드이다 만일 사과의 수가 123개이고

하나의 바구니에는 10개의 사과를 담을 수 있다면 13개의 바구니가 필요할 것이다

[연습문제] /ch3/Exercise3_2.java

*/


class Exercise3_2 {

	public static void main(String[] args) {

		int numOfApples = 123; // 사과의 개수

		int sizeOfBucket = 10; // ( ) 바구니의 크기 바구니에 담을 수 있는 사과의 개수

		int numOfBucket = ( numOfApples/sizeOfBucket+1 ); // 모든 사과를 담는데 필요한 바구니의 수

		System.out.println("필요한 바구니의 수 :"+numOfBucket);

	}

}

//[실행결과] 13


/*

[3-3] 아래는 변수 의 값에 따라 num ‘양수’, ‘음수’, ‘0’을 출력하는 코드이다 삼항연산자로 알맞은 코드

[Hint] 삼항 연산자를 두 번 사용하라.

[연습문제] /ch3/Exercise3_3.java

*/

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’이 된다 에 알맞은 코드를 넣으시오.

[연습문제] /ch3/Exercise3_4.java

*/


class Exercise3_4 {

	public static void main(String[] args) {

		int num = 456;

		System.out.println(num/100*100);

	}

}

//[실행결과] 400


/*

[3-5] 아래는 변수 의 값 중에서 일의 자리를 1로 바꾸는 코드이다 만일 변수 num의 값이 333이라면 331이 되고

777이라면 771이 된다 에 알맞은 코드를 넣으시오

[ ] 연습문제 /ch3/Exercise3_5.java

*/



/*

[3-6] 아래는 변수 num의 값보다 크면서도 가장 가까운 10의 배수에서 변수 num의 값을 뺀 나머지를 구하는 코드이다

예를 들어 24의 크면서도 가장 가까운 10의 배수는 30이다 19의 경우 20이고 81의 경우 90이 된다 30에서 24를 뺀

나머지는 6이기 때문에 변수 num의 값이 24라면 6을 결과로 얻어야 한다 에 알맞은 코드를 넣으시오

[Hint] 나머지 연산자를 사용하라.

[연습문제] /ch3/Exercise3_6.java

*/

class Exercise3_6 {

	public static void main(String[] args) {

		int num = 24;

		System.out.println(10 - num%10);

	}

}

//[실행결과]6



/*

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

'C =5/9 ×(F - 32)'라고 할 때 알맞은 코드를 넣으시오 단 변환 결과값은 소수점 셋째자리에서 반올림해야한다

(Math.round()를 사용하지 않고 처리할 것)

[연습문제] /ch3/Exercise3_7.java

*/

class Exercise3_7 {

	public static void main(String[] args) {

		int fahrenheit = 100;

		float celcius = 5/9F *(fahrenheit -32);

		System.out.println("Fahrenheit:"+fahrenheit);

		System.out.println("Celcius:"+((int)(celcius*100+0.5)/100F));

	}

}

//[실행결과]	Fahrenheit:100

//			Celcius:37.78



/*

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

[ 연습문제 ]/ch3/Exercise3_8.java

*/

class Exercise3_8 {

	public static void main(String[] args) {
		byte a = 10;
		byte b = 20;
		byte c = (byte) (a + b);	//jvm에서 연산을 위해 자동으로 int 형변환, 다시 byte로
		
		char ch = 'A';
		ch = (char) (ch + 2);		//jvm에서 연산을 위해 자동으로 int 형변환, 다시 char로
		
		float f = 3F / 2;			//적어도 하나는 F
		long l = 3000*3000*3000L;	//적어도 하나는 L
		
		float f2 = 0.1f;
		double d = 0.1;
		
		boolean result = (float)d==f2;		//유효자리수가 큰 double은 오차가 커질 수 있어 float으로
		
		System.out.println("c="+c);
		System.out.println("ch="+ch);
		System.out.println("f="+f);
		System.out.println("l="+l);
		System.out.println("result="+result);
	}

}

//[실행결과]

//c=30

//ch=C

//f=1.5

//l=27000000000

//result=true



/*

[3-9] 다음은 문자형 변수 ch가 영문자 (대문자 또는 소문자)이거나 숫자일 때만 변수  b의 값이 true가 되도록

[연습문제] /ch3/Exercise3_9.java

*/


class Exercise3_9 {

	public static void main(String[] args) {

		char ch = 'z';		//char은 ''로 표시, 논리연산자 ||이용

		boolean b = ('A' <= ch && ch <= 'Z' || 'a' <= ch && ch <= 'z' ||

				'0' <= ch && ch <= '9');

		System.out.println(b);

	}

}

//[실행결과]	true


/*

[3-10] 다음은 대문자를 소문자로 변경하는 코드인데 문자 ch에 저장된 문자가 대문자인 경우에만 소문자로 변경한다

문자코드는 소문자가 대문자보다 32만큼 더 크다 예를 들어 'A‘의 코드는 65이고 ’a'의 코드는 97이다

[연습문제] /ch3/Exercise3_10.java

*/

class Exercise3_10 {

	public static void main(String[] args) {

		char ch = 'A';	//대문자인지 판별한 뒤에 32만큼 합한다, 계산은 int로 이루어지기 때문에 변환

		char lowerCase = ( 'A' <= ch && ch <= 'Z' ) ? (char)(ch+32) : ch;

		System.out.println("ch:"+ch);

		System.out.println("ch to lowerCase:"+lowerCase);

	}

}

//[실행결과]

//	ch:A

//	ch to lowerCase:a







'먼지 낀 책장사이 > Java' 카테고리의 다른 글

4장 조건문과 반복문  (0) 2017.08.04
자바의 정석 연습문제 2장 변수  (0) 2017.07.25