[과제] 피라미드 별 찍기, 업앤다운 게임

킹발·2022년 9월 21일
0
post-thumbnail

피라미드 쌓기

소스코드

        Scanner scanner = new Scanner(System.in);
        System.out.print("몇 단을 쌓아 올릴건가 > ");
        int dan = scanner.nextInt();

        for (int i = 1; i <= dan; i++) {
            for (int j = dan - i; j > 0; j--) {
                System.out.print(" ");
            }
            for (int k = 1; k <= i*2-1; k++) {
                System.out.print("*");
            }
        }

실행결과

실행결과
2번째 별 모양은 Font>Enable ligatures 설정 때문

다른 방법

  • 정수 외 입력시 프로그램 죽는 문제 처리
  • String.repeat( ) 함수 사용해서 간결화 가능
while (true) {
    Scanner scanner = new Scanner(System.in);
    System.out.print("몇 단을 쌓아 올릴건가> ");

    try {
        int num = scanner.nextInt();
        for (int i = 1; i <= num; i++) {
            System.out.println(" ".repeat(num - i) + "*".repeat(2 * i - 1));
        }
        break;
    } catch (InputMismatchException e) {
             System.out.println("정수를 입력 해주세요.");
    }
}

업앤다운 게임

소스코드

  • 되도록이면 코드안에 숫자를 직접 하드코딩 하지 말고 유지보수하기 쉽게 위에 변수로 선언해놓자
  • 변하지 않는다면 final 선언을 해주자
private static void upDownGame() {
    Scanner sc = new Scanner(System.in);

    final int ANSWER = (int)(Math.random()*100);
    final int MAX_CHANCE = 10;
    int chance = 10;

    while (chance > 0) {

        // 입력값 받기
        System.out.print("정답이 뭐게~ : ");
        int input = sc.nextInt();

        // 입력값에 따라 힌트 주기
        if (input < ANSWER) {
            System.out.println("HIGH");
            chance--;
            continue;
        } else if (input > ANSWER) {
            System.out.println("LOW");
            chance--;
            continue;
        }

        // 정답이면 반복문 탈출!
        System.out.println("어캐 맞혔누! 시도횟수= " + (MAX_CHANCE + 1 - chance));
        break;
    }

    if (chance == 0) {
        System.out.println("기회 10번 끝! 땡!!");
    }
}

실행결과


0개의 댓글