자바 초보에서 알고리즘 B형까지 도전기3 -반복문 필수지식1-

1. 중괄호 쓰지 않는 for문, while문

 

if문과 마찬가지로 바로 아래 1줄만 for문 내부 코드로 생각하고 이외의 코드는 for문 내부 코드가 아니라고 생각한다

 

while문도 마찬가지다.

 

public class Main {
    public static void main(String[] args) {
        for (int i = 5; i < 7; i++)
            System.out.println(i);     // for 내부 코드
            System.out.println(2 * 2); // for 내부 코드가 아님
    }
}

5
6
4

 

2. 공백을 두고 한줄로 출력하기

 

python에서는 리스트에 담아서 *을 붙여서 출력했지만..

 

java에서는 for문을 이용해 System.out.print(i + " "); 방식으로 가능하다.

 

public class Main {
    public static void main(String[] args) {
        for(int i = 5; i<=17; i++){
            System.out.print(i + " ");
        }
    }
}

 

3. 여러 줄에 걸쳐 입력을 받고자 할때

 

한줄이나 두줄이면 일일이 sc.nextInt();로 써줄 수 있겠지만, 10줄, 100줄이나 있으면... 이걸 언제 sc.nextInt();를 써서 다 받을까?

 

이럴때는 for문을 이용해서 받으면 되겠다

 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        // 10줄에 걸쳐 정수를 받아 홀수의 개수를 출력

        Scanner sc = new Scanner(System.in);

        int count = 0;

        for(int i = 1; i<=10; i++){
            int n = sc.nextInt();

            if(n % 2 == 1){
                count++;
            }
        }
        System.out.print(count);
    }
}

5
10
2
7
3
9
100
7
4
6

5

 

 

4. 증감식 변화시키기

 

자바에서 반복문은 for(초기식; 조건식; 증감식) { 수행 코드}로 이루어져 있다는 것을 알고 있다.

 

그리고 여기서 수행 과정을 잘 이해하고 있어야겠다.

 

1) 초기식을 먼저 보고

 

2) 조건식이 맞는지 확인하고

 

3) 수행코드를 수행하고

 

4) 증감식을 수행한다

 

그러므로 수행코드에 증감식을 바꾸는 코드를 넣었다면, 증감식을 매 반복문마다 바꿀 수 있을 것이다.

 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        // 여기에 코드를 작성해주세요.

        Scanner sc = new Scanner(System.in);

        int a = sc.nextInt();
        int b = sc.nextInt();

        int k;

        for (int i = a; i <= b; i += k){

            System.out.print(i + " ");

            if(i % 2 == 1){
                k = i;
            } else{
                k = 3;
            }
        }
    }
}

2 13

2 5 10 13

 

 

5. 무한루프 만들기

 

자바에서 조건식에 숫자, truthy, falsy 등을 넣을 수는 없다

 

그래서 while (true)로 무한루프를 만들 수 있다.

 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        // 여기에 코드를 작성해주세요.

        Scanner sc = new Scanner(System.in);

        while(true){
            int n = sc.nextInt();

            if(n < 25){
                System.out.println("Higher");
            } else if (n > 25){
                System.out.println("Lower");
            } else {
                System.out.println("Good");
                break;
            }
        }
    }
}

 

혹은 for문에서 조건식, 초기식, 증감식을 모두 안쓰고 for (;;)로 무한루프를 만들 수 있다

 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        // 0을 입력할때까지 계속 입력을 받아 출력하는 코드

        Scanner sc = new Scanner(System.in);

        for (;;) {
            int n = sc.nextInt();

            if (n == 0){
                break;
            }

            System.out.println(n);
        }
    }
}
TAGS.

Comments