- while문

while (조건식) {
	조건식의 결과가 true인 동안 반복할 문장;
	...
}

 

 


while문을 이용해 1 ~ 100까지의 짝수의 총합 구하기!

public class WhileSum {
    public static void main(String[] args) {
        /* 1~100까지의 짝수의 총합*/
        int sum = 0;
        int i = 0;

        while(i <= 100) {
            sum += i;
            i += 2;
        }

        System.out.println("1~100까지의 짝수의 총합 : " + sum);

    }
}

위 코드의 결과

짝수이기 때문에 i에다가 +2를 해준다.


 

- for문

for (변수의 초기화; 조건식; 증감식) {
	조건식이 true인 동안 반복할 문장;
    ...
}

 


- do ~ while 문

while문과 동일하지만 첫 반복이 false인 경우 while문은 반복하지 않는다. 

그렇지만 do ~ while문의 경우, 일단 한 번 문장을 실행한 뒤에 조건식을 판단한다.

do {
	문장..
} while (조건식);

 


 

- continue 문

반복이 진행되는 도중  continue문을 만나면 반복문의 끝으로 이동하여 다음 반복으로 시작된다.

for (변수; 조건식; 증감식) {
	....1
        ....2
        if(조건식) continue;
        ....3
}

if 조건식이 true이면, 반복 중에 continue문을 만나기 때문에... 3을 진행하지 않고, 다음 반복을 시작한다.

 


continue문으로 3,6,9프로그램 만들기!

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

        for(int i = 1; i <= 100; i++) {
            if( i % 3 == 0) {
                System.out.print("👏 ");
                continue;
            }
            System.out.print(i + " ");
        }
    }
}

위 코드의 결과

i가 3으로 나누었을 때 나머지가 0인 경우가 3의 배수이다. 조건에 맞을 경우 박수를 출력하고 continue를 이용해 숫자 출력을 뛰어넘고 다음 반복을 진행한다.

 


- break문

switch문 또는 반복문을 벗어 날 때 사용한다.

for(변수; 조건식; 증감식) {	
	...
        ...
        if(조건식) break;
        ...
}

 


✔ Math 클래스

자바에서 사용되는 수학 관련한 기능을 담고 있는 클래스를 의미한다.

 

random() : 임의의 실수 ( 0 ~ 0.99999)를 출력

                  반환값의 자료형 타입 앞에 static이 붙어 있기 때문에 객체를 만들 필요가 없다.

 

                    double rn = Math.random();


- 중첩 반복문

2개 이상의 반복문이 겹쳐져 있는 형태

        while(조건식1) {
            조건식1이 true인 동안 반복할 문장;
            ...
            whlie(조건식2) {
                조건식2가 true인 동안 반복할 문장;
                ...
            }
        for (변수; 조건식1; 증감식) {
            조건식1이 true인 동안 반복할 문장;
            ...
            for(변수; 조건식2; 증감식) {
                조건식2이 true인 동안 반복할 문장;
                ...
            }
        }

 

 

 


while문을 이용해 구구단 출력하기!

public class Gogodan {
    public static void main(String[] args) {
        int i = 1;
        int j = 1;

        while(i <= 9) {
            System.out.println(i + "단");
            while(j <= 9) {
                System.out.println(i + " * " + j + " = " + i*j) ;
                j++;
            }
            j = 1;
            i++;
        }
    }
}

 

1단부터 9단까지 잘 출력된것을 확인할 수 있다. while문은 for문과 다른 게 초기화가 없기 때문에 초기화를 위해 j = 1;이라는 문장을 넣어주는 것이다.


개복치 출력하기!

  /*
            '🐠'를 사용하여 아래와 같이 출력

            1.🐠 🐠 🐠 🐠 🐠
        */

        for(int i = 0; i < 5; i++) {
            System.out.print("🐠 ");
        }
        System.out.println();
        System.out.println("--------------------------");

위 코드의 결과

 

/*  2.🐠 🐠 🐠 🐠 🐠
      🐠 🐠 🐠 🐠 🐠
      🐠 🐠 🐠 🐠 🐠
      🐠 🐠 🐠 🐠 🐠
      🐠 🐠 🐠 🐠 🐠
*/

for (int i = 0; i < 5; i++) {
    for(int j = 0; j < 5; j++) {
        System.out.print("🐠 ");
    }
    System.out.println();
}
System.out.println();
System.out.println("--------------------------");

위 코드의 결과

 

 

/* 3. 🐠 🐠 🐠 🐠 🐠
      🐠 🐠 🐠 🐠
      🐠 🐠 🐠
      🐠 🐠
      🐠
  */
for (int i = 5; i > 0; i--) {
    for(int j = 0; j < i; j++) {
        System.out.print("🐠 ");
    }
    System.out.println();
}
System.out.println();
System.out.println("--------------------------");

위 코드의 결과

위의 5x5에서 j의 범위와 i의 조건들을 바꾸면 출력할 수 있다. 먼저 j에서 개복치는 출력하기때문에 5개를 찍기 위해서는 j의 for문이 5번 돌아야 한다. 그리고 두 번째 줄의 개복치들은 4개만 찍혀야 되기 때문에 j는 4번돌아야한다. 

따라서 i의 시작을 5로 하고, i의 값을 하나씩 줄어들게한다. 그리고 j의 범위는 i로 제한하면 하나씩 줄어드는 개복치들을 볼 수 있다.

 

 

/*
   4. 🐠
      🐠 🐠
      🐠 🐠 🐠
      🐠 🐠 🐠 🐠
      🐠 🐠 🐠 🐠 🐠

* */
for (int i = 0; i < 5; i++) {
    for(int j = 0; j <= i; j++) {
        System.out.print("🐠 ");
    }
    System.out.println();
}
System.out.println();
System.out.println("--------------------------");

위 코드의 결과

3번째와는 다르게 시작이 한 개이기 때문에 i, j의 초기화를 0으로 동일하게 한다. i의 첫 번째 반복에서 j도 하나의 개복치만을 출력해야 되기 때문에 j의 범위를 i로 조건을 주면 위와 같은 개복치들을 볼 수 있다.

 


- 배열 (Array)

변수는 한 개의 데이터만 저장하기 때문에 데이터의 수가 많아지면 그만큼 많은 변수가 필요하다.

동일한 데이터 타입의 변수를 연속적으로 생성할 수 있다.

인덱스를 통하여 데이터에 접근이 가능하다.

 

- 배열의 선언

데이터타입[] 배열이름;
데이터타입 배열이름[];

arr = new int[10];

 

- 배열의 메모리 할당

배열이름 = new 데이터타입[요소의 갯수];
arr = new int[10];

 

- 배열의 선언 및 할당

데이터타입[] 배열명 = new 데이터타입[요소의 갯수];
int[] arr = new int[10];

 

- 배열의 초기화

배열명[인덱스번호] = 값;
arr[0] = 10;

 

 


입력받은 값 배열에 할당하고, 최댓값, 최솟값 출력하기!

import java.util.Scanner;

public class Array1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.println("몇 개의 값을 저장할까요? ");
        int num = sc.nextInt();

        int[] arr = new int[num];

        for(int i =0; i < arr.length; i++) {
            System.out.print((i+1) + "번 인덱스에 넣을 값을 입력하세요 : ");
            arr[i] = sc.nextInt();
        }

        int max = arr[0];
        int min = arr[0];

        // 최대값 최소값 구하기
        for(int i = 0; i < arr.length; i++) {
            if(max < arr[i]) {
                max = arr[i];
            } else if (min > arr[i]) {
                min = arr[i];
            }
        }

        System.out.println("최대값 : " + max);
        System.out.println("최소값 : " + min);
    }
}

위 코드의 결과

max와 min이라는 변수를 만들고 배열의 첫 인덱스 값을 넣어준다. 그리고 if문과 for문을 이용해 반복해서 배열의 값들과 max, min 값을 비교한다. 

max의 경우, 첫 번째 인덱스와 차례로 오는 다음 인덱스들과 비교해서 max가 다음으로 오는 인덱스 값 보다 작으면 그 값을 max에 대입해주는 것을 반복한다.

min의 경우는 반대로 min이 다음으로 오는 인덱스의 값보다 크다면 그 값을 min의 대입해주는 것을 반복으로 한다.

그렇게 하면 최댓값과 최솟값을 구할 수 있다.


과제 1. 주사위 게임 만들기!

         👀 과제
        1. 주사위 게임 만들기
            1) 랜덤한 주사위 값을 뽑아 입력한 값과 일치하는지 확인
            2) 값의 범위는 1 ~ 6까지로 함
            3) 값을 맞출 때까지 프로그램을 진행

            주사위를 던진다.
            값을 입력하세요. 3
            틀렸습니다 값은 1 입니다.

            주사위를 던집니다.
            값을 입력하세요. 2
            맞췄습니다. 프로그램을 종료합니다.

            맞출 때 까지 던지고 입력, 맞추면 종료

import java.util.Scanner;

public class Assigment1 {
    public static void main(String[] args) {
  
        Scanner sc = new Scanner(System.in);
        while(true) {
            int rn = (int)(Math.random()* 6 + 1);// 랜덤한 값 1~6까지
            System.out.println("주사위를 던진다.");
            System.out.print("값을 입력하세요 : ");
            int val = sc.nextInt();

             if (val == rn) {
                System.out.println("맞췄습니다. 프로그램을 종료합니다.");
                break;
             } else {
                 System.out.println("틀렸습니다. 값은 "+rn+" 입니다.");
             }
    }


    }
}

위 코드의 결과

코드에서 random() 메서드의 경우, double 값으로 나오며, 0~0.9999까지의 범위이다. 따라서 1~6까지 범위를 맞추기 위해서 *6+1을 해준다. 

그리고 맞출 때까지 반복해야 되기 때문에 while문의 조건을 true로 주고 맞출 경우에 break;로 반복문을 나오게 조건을 준다.

 


과제 2. 가위바위보 게임 만들기!

        1) 컴퓨터와 가위바위보 게임
        2) 값의 범위는 1 ~ 3까지로 함(가위:1, 바위:2, 보:3)
        (문자비교를 해도됨)
        3) 값을 맞출때까지 프로그램을 진행

        가위, 바위, 보 중 하나를 선택하세요. 가위
        컴퓨터 : 바위
        나 : 가위
        졌습니다!

        가위, 바위, 보 중 하나를 선택하세요. 가위
        컴퓨터 : 보
        나 : 가위
        이겼습니다! 프로그램을 종료합니다.

import java.util.Scanner;

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

        Scanner sc = new Scanner(System.in);


        while(true) {
            int rn = (int)(Math.random() * 3 + 1);
            System.out.print("가위, 바위, 보 중 하나를 선택하세요.");
            String val = sc.next();

            String result = "";
            if(rn == 1) {
                result = "가위";
            } else if (rn == 2) {
                result ="바위";
            } else {
                result = "보";
            }

            if(val.equals("가위") && result.equals("보") || val.equals("바위") && result.equals("가위")
                    || val.equals("보") && result.equals("바")) {
                System.out.println("컴퓨터 : " + result);
                System.out.println("나 : " + val);
                System.out.println("이겼습니다! 프로그램을 종료합니다.");
                break;
            } else if(val.equals(result)) {
                System.out.println("컴퓨터 : " + result);
                System.out.println("나 : " + val);
                System.out.println("비겼습니다!");
            } else {
                System.out.println("컴퓨터 : " + result);
                System.out.println("나 : " + val);
                System.out.println("졌습니다!");
            }

        }
     }
}

위 코드의 결과

위 코드의 경우, 숫자로 입력받아도 되지만 나는 문자열로 받았다. 그래서 random() 메서드로 1~3 범위까지로 정하고 1은 "가위" , 2는 "바위" 3은 "보"로 조건을 주었다. 그리고 이기는 경우의 수에 맞춰 조건을 주고, 이길 경우에만 반복문을 나가게끔 break;을 이용하였다. 

 

 

복사했습니다!