📑연 습 문 제

[4️⃣-1️⃣]

다음의 문장들을 조건식으로 표현하라.

① int형 변수 x가 10보다 크고 20보다 작을 때 true인 조건식

10 < x && x < 20
x < 10 && x < 20 도 맞는 식이지만, 범위를 좀 더 보기 좋게 하기 위해 위와 같이 작성한다.

 

 

② char형 변수 ch가 공백이나 탭이 아닐 때 true인 조건식

ch !== ' ' || ch !== 'Wt'

//또는

!(ch == ' ' || ch == 'Wt')
char형에서
공백은 ' '
Tap은 'Wt'로 표현할 수 있다.

 

 

③ char형 변수 ch가 'x' 또는 'X'일 때 true인 조건식

ch == 'x' || ch == 'X'

 

 

④ char형 변수 ch가 숫자('0'~'9')일 때 true인 조건식

'0' <= ch && ch <= '9'

 

 

⑤ char형 변수 ch가 영문자 (대문자 또는 소문자)일 때 true인 조건식

('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z')
(소문자 범위) || (대문자 범위)
괄호를 쳐서 소문자와 대문자 범위를 각각 적어준다.

 

 

⑥ int형 변수 year가 400으로 나눠 떨어지거나 또는 4로 나눠 떨어지고 100으로 나눠 떨어지지 않을 때 true인 조건식

year % 400 == 0 || year % 4 == 0 && year % 100 !== 0
나누어 떨어지려면 나머지가 0인 것을 확인하면 된다.

 

 

⑦ boolean형 변수 powerOn이 false일 때 true인 조건식

powerOn == flase

//또는

!powerOn

 

 

⑧ 문자열 참조변수 str이 "yes"일 때 true인 조건식

str.equal("yes")

//또는

"yes".equal(str)
문자열을 비교할 때는. equal() 메소드를 사용한다.

 

 

 

 

[4️⃣-2️⃣]

1부터 20까지의 정수 중에서 2 또는 3의 배수가 아닌 수의 총합을 구하시오.

package jokun.standardOfJava.chap04;

public class Ex4_2 {

    public static void main(String[] args){

        int sum = 0;

        for(int i = 1; i <= 20; i++) {
            if (i % 2 != 0 && i % 3 != 0) {
                System.out.println(i);
            sum += i;
            }
        }System.out.println("합계 : " + sum);


    }
}

 

 

 

 

[4️⃣-3️⃣]

1+(1+2)+(1+2+3)+(1+2+3+4)+...+(1+2+3+...+10)의 결과를 계산하시오.

package jokun.standardOfJava.chap04;

public class Ex4_3 {
    public static void main(String[] args) {

        int sum = 0;
        int total = 0;

        for(int i = 1; i <= 10; i++){
            sum += i;
            total += sum;

        }
        System.out.println("정답 : " + total);
    }
}

for문을 통해 i는 1부터 10까지 차례대로 반복된다. (1, 2, 3, 4, 5 …10)

i에 다음 i값을 더하고, 더한 값에 또 다음 i값을 더한다 (1, 1 + 2, 3 + 3, 6 + 4, 10 + 5 …45 + 10) ▷ sum += i;

1, 3, 6, 10, 15, 21, 28, 36, 45, 55의 값이 sum에 저장된다.

이때,

1 = 1 + 2

3 = 1 + 2 + 3

6 = 1 + 2 + 3 + 4 …

55 = 1 + 2 + 3 …9 + 10

sum에 저장한 값을 다시 모두 더한다 ▷ total += sum;

 

 

 

 

[4️⃣-4️⃣]

1+(-2)+3+(-4)+...   과 같은 식으로 계속 더해나갔을 때, 몇까지 더해야 총합이 100 이상이   되는지 구하시오.

package jokun.standardOfJava.chap04;

public class Ex4_4 {
    public static void main(String[] args) {

        int num = 0;
        int sum = 0;
        int s = 1;

        for(int i = 1; sum < 100; i++, s = -s){ //1부터 합계가 100이 될 때까지 i는 증가하고 s값 1은 +였다가 -였다가 반복한다.
            num = s * i; // 어차피 1은 곱해도 i값이기에, i값에 -,+부호만 붙여준다.
            sum += num; // 합친 값이 100이 되는지 확인

            System.out.println("i값 : " + i + ", s값 : " + s + " ===> num값 : " + num);
        }
        System.out.println("num : " + num);
        System.out.println("sum : " + sum);

    }
}

s값 부호 바뀌는 원리

조건식으로 이렇게 써도 가능! 
for(int i=1;true; i++,  s=-s) 
sum  += num;
if(sum  >=100) // 총합이 100보다 같거나 크면 반복문을 빠져 나간다.
break; }

 

 

 

 

[4️⃣-5️⃣]

다음의 for문을 while문으로 변경하시오.

package jokun.standardOfJava.chap04;

public class Ex4_5 {
    public static void main(String[] args) {

        int i = 0;

        while(i <= 10){
            int j = 0;
            while (j <= i){
                System.out.print("*");
                j++;
            }
            System.out.println();
            i++;
        }
    }
}

 

 

 

 

 

[4️⃣-6️⃣]

두 개의 주사위를 던졌을 때, 눈의 합이 6이 되는 모든 경우의 수를 출력하는 프 로그램을 작성하시오.

package jokun.standardOfJava.chap04;

public class Ex4_6 {
    public static void main(String[] args) {

        int sum = 0;

        for(int i = 1; i <= 6; i++){
            for(int j = 1; j <= 6; j++){

                sum = i + j;
                if(sum == 6){
                    System.out.println("합이 6이 되는 경우 : 주사위1(" + i + ") + 주사위2(" + j +")");
                }
            }
        }
    }
}

sum이라는 변수 안만들어도 가능!
class Exercise4_6 {
public static void main(String[] args)  { for(int i=1;i<=6;i++)
for(int  j=1;j<=6;j++) if(i+j==6)
System.out.println(i+"+"+j+"="+(i+j));
} // main }​

 

 

 

 

[4️⃣-7️⃣]

숫자로 이루어진 문자열 str이 있을 때, 각 자리의 합을 더한 결과를 출력하는 코드를 완성하라 만일 문자열이 "12345"라면, ‘1+2+3+4+5’의 결과인 15를 출력이 출력되어야 한다. (1)에 알맞은 코드를 넣으시오. 

[Hint] String클래스의 charAt(int i)을 사용

package jokun.standardOfJava.chap04;

public class Ex4_7 {
    public static void main(String[] args) {

        String str = "12345";
        int sum = 0;

        for (int i = 0; i < str.length(); i ++){

            char c = str.charAt(i);

            int num = Character.getNumericValue(c);

            sum += num;
            System.out.println(num);

        }
        System.out.println("sum = " + sum);
    }
}

 

 

더 간단하게도 가능!
class Exercise4_7 {
public static void main(String[] args) {
String str = "12345";
int sum =  0;
for(int i=0; i  < str.length(); i++)  {
sum  += str.charAt(i) - '0';
}
System.out.println("sum="+sum); }
}

sum 변수에다가 바로 String형을 char형으로 변환한 i에 - '0'를 빼줌으로서 문자를 숫자로 변환한 값을 바로 저장하여 +=로 누적한다.

 

 

 

 

[4️⃣-8️⃣]

Math.random()을 이용해서 1부터 6사이의 임의의 정수를 변수 value에 저장하는 코드를 완성하라. (1)에 알맞은 코드를 넣으시오.

package jokun.standardOfJava.chap04;

public class Ex4_8 {
    public static void main(String[] args) {

        int value = (int)(Math.random() * 6) + 1;
        System.out.println("value:" + value);
    }
}
Math.random() 메소드는 0.0~1.0 범위에 속하는 double형의 값을 랜덤으로 반환해주기 때문에
정수형으로 바꾸기 위해서 형변환을 실시해줘야한다.

 

 

 

 

[4️⃣-9️⃣]

int타입의 변수 num이 있을 때 각 자리의 합을 더한 결과를 출력하는 코드를 완성하라.

만일 변수num의 값이 12345라면, ‘1+2+3+4+5’의 결과인 15를 출력하라. 

(1)에 알맞은 코드를 넣으시오.

[주의] 문자열로 변환하지 말고 숫자로만 처리해야 한다.

package jokun.standardOfJava.chap04;

public class Ex4_9 {
    public static void main(String[] args) {

        int num = 12345;
        int sum = 0;

        while(num > 0){
            sum += num % 10;
            System.out.print("sum 값 : " + sum);
            num /= 10;
            System.out.println("  /  num 값 : " + num);
        }
        System.out.println("sum = " + sum);
    }
}

 

 

 

 

[4️⃣-🔟]

다음은 숫자맞추기 게임을 작성한 것이다. 1과 100사이의 값을 반복적으로 입력 해서 컴퓨터가 생각한 값을 맞추면 게임이 끝난다. 사용자가 값을 입력하면, 컴퓨터는 자 신이 생각한 값과 비교해서 결과를 알려준다. 사용자가 컴퓨터가 생각한 숫자를 맞추면 게임이 끝나고 몇 번 만에 숫자를 맞췄는지 알려준다. (1)~(2)에 알맞은 코드를 넣어 프로그램을 완성하시오.

 

복사했습니다!