/*

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

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

*/


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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

*/


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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

*/

1
2
3
4
5
6
7
8
9
10
11
12
13
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

*/


1
2
3
4
5
6
7
8
9
10
11
12
13
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

*/

1
2
3
4
5
6
7
8
9
10
11
12
13
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

*/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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

*/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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

*/


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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

*/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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