Java 기초

Java 기초 (3. Switch문, While문)

Kw_w 2024. 2. 29. 17:09

 

지식에 대한 투자는 최고의 보상을 가져다 줄 것이다.
- 벤자민 프랭클린
  • Switch

if문과 비슷하지만 좀 더 일정한 형식이 있는 조건 판단문

// 입력변수에 올 수 있는 값은 문자, 숫자, enum type

switch (입력변수){
	case (입력값):
		...
	break;
	
	case (입력값):
		...
	break;
	
default:
		...
}
=======================================================
enum GENDER{
    MALE, FEMALE,
}
public class EnhancedSwitch {
    public static void main(String[] args) {
        GENDER gender = GENDER.FEMALE;
        String result =  switch (gender){
            case MALE -> {
                yield "남자입니다";
            }
            case FEMALE -> "여자입니다";
            default -> "중성입니다";
        };
        System.out.println(result);
    }
}

 

  • while 반복문
// 1부터 10까지 총 합을 출력하는 while문을 작성하시오

public class WhileTest {
    public static void main(String[] args) {
        int i = 1;
        int sum = 0;
        while (i <= 10){
            sum = sum + i;
            System.out.println(sum);
            i++;
        }
    }
}

// 1~10까지의 4의 배수의 합을 구하시오

public class WhileTest {
    public static void main(String[] args) {
        int i = 1;
        int sum = 0;
        while (i <= 10){
            if (i%4==0){
                sum = sum + i; // sum += i
                System.out.println(sum);
            }
            i++;
        }
    }
}

/* 이전 두개의 숫자를 더하여 다음 숫자를 만들어가는 프로그램을 작성해보자
ex) 0, 1, 1, 2, 3, 5, 8, 13, 21, 34
총 길이를 10개로 하고 만들어 보자 */

public class WhileTest {
    public static void main(String[] args) {
        int n = 10;
        int first = 0;
        int second = 1;

        int count = 0;

        while (n >  count){
            System.out.println(first+"");
            var next = first + second;
            first = second;
            second = next;
            count++;
        }
    }
}

// 은행에 예금/출금/조회/종료 하는 프로그램을 작성해보자
=================================================
package ch05.constants;

public class Constants {
    public static final int IN_MONEY = 1;
    public static final int OUT_MONEY = 2;
    public static final int VIEW_MONEY = 3;
    public static final int END = 4;
}
아래 코드의 Constants 코드
=================================================
import java.util.Scanner;

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

        var choice = 0;
        var balance = 0;

        while(choice != Constants.END){

            System.out.println("1.예금 | 2.출금 | 3.조회 | 4.종료");
            System.out.println("원하는 동작을 선택하세요.");

            choice = sc.nextInt();
            switch (choice){
                case Constants.IN_MONEY -> {
                    System.out.println("에금액 :");
                    var money = sc.nextInt();
                    balance += money;
                }
                case Constants.OUT_MONEY -> {
                    System.out.println("출금액 :");
                    var money = sc.nextInt();
                    balance -= money;
                }
                case Constants.VIEW_MONEY -> System.out.println("현재 잔고는 "+ balance + "입니다");
                case Constants.END -> System.out.println("안녕히 가십시오");
            }
        }
    }
}

▶ 문제 1. 10개의 정수를 입력받은 다음 1개의 정수를 찾는 프로그램을 작성하라 (중간값을 이용해 점점 범위를 줄여나가는 방식으로)

import java.util.Scanner;

public class BinaryTest {
    public static void main(String[] args) {
        System.out.println("정수 10개를 오름차순으로 입력하세요");
        Scanner sc = new Scanner(System.in);

        int i = 0;
        int[] arr = new int[10];

        while (i < 10){
            arr[i] = sc.nextInt();
            i++;
        }
        System.out.println("찾을 숫자를 입력하세요");
        int target = sc.nextInt();
        int loopCnt = 0;
        // length : 배열의 개수를 리턴
        int start = 0;
        int end = arr.length-1;
        boolean bFlag = false;

        while (loopCnt < arr.length) {
            int mid = (start + end) / 2;

            if (target == arr[mid] || target == arr[start] || target == arr[end]) {
                bFlag = true;
                break; //break 구문은 반복문을 탈출
            } else if (target > arr[mid]) start = mid;
            else if (target < arr[mid]) end = mid;
            loopCnt++;
        }
        if(bFlag) System.out.println(++loopCnt + "find");
        else System.out.println("not in list");
    }
}

 

  • do - while
do {
	statement...
}while (조건식);

 

▶ 문제 2. 숫자 맞추기 게임

1~100사이의 숫자를 난수를 발생 시키고
사용자로부터 숫자를 입력받아 해당 난수와 동일하면 게임이 종료되는 프로그램을 작성
만약 난수가 88이고 사용자가 78을 입력했다면
높은 숫자를 입력하세요. 라고 안내문구가 뜨고
그 반대라면 낮은 숫자를 입력하세요 라고 안내 문구를 출력한 다음 재입력을 받는다

총 10번의 기회가 주어지고 찾으면 루프를 탈출한다.

import java.util.Random;
import java.util.Scanner;

public class GameTest {
    public static void main(String[] args) {
        Random random = new Random();
        var answer = random.nextInt(100) + 1;

        Scanner sc = new Scanner(System.in);

        int trys = 10;

        System.out.println("1부터 100 사이의 숫자를 맞춰보세요!");

        for (int attempt = 1; attempt <= 10; attempt++) {
            System.out.print("시도 #" + attempt + ": 입력하세요: ");
            var userinput = sc.nextInt();

            if (userinput == answer) {
                System.out.println("축하합니다! 숫자를 맞췄습니다. 정답은 " + answer + "입니다.");
                break;
            } else if (userinput < answer) {
                System.out.println("높은 숫자를 입력하세요.");
            } else System.out.println("낮은 숫자를 입력하세요.");

            System.out.println("남은 기회: " + (trys - attempt));
            if (attempt == 10) {
                System.out.println("게임 오버! 정답은 " + answer + "입니다.");
            }
        }

    }
}

'Java 기초' 카테고리의 다른 글

Java 기초 (4. Overload vs Override)  (2) 2024.03.12
Java 기초 (연습하기-1)  (0) 2024.03.12
Java 기초 (2. 형변환과 연산자, 조건문)  (2) 2024.02.28
Java 기초 (1. 메모리와 데이터 타입)  (2) 2024.02.27
Java 개론  (0) 2024.02.26