Quest

[과제] 반복문

_유니 2022. 11. 3. 17:37

 

마지막 문제 다 풀었는데  버퍼에 남아있는 엔터 제거 안 해서 헛고생했다...

조건문 문제 풀 때도 그래서 까먹지 말자고 다짐했는데,,

이 정도 했으면 앞으로는 실수 안 하겠지,,? 원래 인간은 실수하면서 배우는 거임

 

 


 

문제 1. 사용자로부터 한 개의 값을 입력받아 1부터 그 숫자까지의 숫자들을 모두 출력하세요.

 

package com.yh.practice.chap02.loop;

import java.util.Scanner;

public class LoopPractice {

	public void practice1() {

		Scanner sc = new Scanner(System.in); // 스캐너 생성

		System.out.print("1이상의 숫자를 입력하세요 : ");
		int num = sc.nextInt(); // 정수로 입력받는 메소드

		if (num >= 1) {
			for (int i = 1; i <= num; i++) {
				System.out.print(i + " ");
			}
		} else { // 1 미만의 숫자가 입력됐을 경우
			System.out.println("1 이상의 숫자를 입력해주세요.");
		}
	}
1이상의 숫자를 입력하세요 : 0
1 이상의 숫자를 입력해주세요.

1이상의 숫자를 입력하세요 : 5
1 2 3 4 5

 


 

문제 2. 위 문제와 모든 것이 동일하나, 1 미만의 숫자가 입력됐다면

"1 이상의 숫자를 입력해주세요"가 출력되면서 다시 사용자에게 값을 입력하도록 하세요.

 

package com.yh.practice.chap02.loop;

import java.util.Scanner;

public class LoopPractice {

public void practice2() {

		Scanner sc = new Scanner(System.in); // 스캐너 생성

		while (true) { // 사용자가 다시 값을 입력할 수 있도록 조건식 true
			System.out.print("1이상의 숫자를 입력하세요 : ");
			int num = sc.nextInt(); // 정수를 입력받는 메소드

			if (num >= 1) {
				for (int i = 1; i <= num; i++) {
					System.out.print(i + " ");
				}
				return; // 메소드 빠져나가는 구문

			} else { // 1 미만의 숫자 입력됐을 경우
				System.out.println("1 이상의 숫자를 입력해주세요.");
			}
		}
	}
1이상의 숫자를 입력하세요 : 0
1 이상의 숫자를 입력해주세요.
1이상의 숫자를 입력하세요 : 10
1 2 3 4 5 6 7 8 9 10

 


 

문제 3. 사용자로부터 한 개의 값을 입력받아 1부터 그 숫자까지의 모든 숫자를 거꾸로 출력하세요.

단, 입력한 수는 1보다 크거나 같아야 합니다.

 

package com.yh.practice.chap02.loop;

import java.util.Scanner;

public class LoopPractice {

	public void practice3() {

		Scanner sc = new Scanner(System.in); // 스캐너 생성

		System.out.print("1이상의 숫자를 입력하세요 : ");
		int num = sc.nextInt(); // 정수를 입력받는 메소드

		if (num >= 1) {
			for (int i = num; i >= 1; i--) {
				System.out.print(i + " ");
			}
		} else { // 1 미만의 숫자 입력했을 경우
			System.out.println("1 이상의 숫자를 입력해주세요.");
		}
	}
1이상의 숫자를 입력하세요 : 0
1 이상의 숫자를 입력해주세요.

1이상의 숫자를 입력하세요 : 8
8 7 6 5 4 3 2 1

 


 

문제 4. 위 문제와 모든 것이 동일하나, 1 미만의 숫자가 입력됐다면

"1 이상의 숫자를 입력해주세요"가 출력되면서 다시 사용자에게 값을 입력하도록 하세요.

 

package com.yh.practice.chap02.loop;

import java.util.Scanner;

public class LoopPractice {

	public void practice4() {

		Scanner sc = new Scanner(System.in); // 스캐너 생성

		while (true) { // 사용자가 다시 입력할 수 있도록 조건식 true
			System.out.print("1이상의 숫자를 입력하세요 : ");
			int num = sc.nextInt(); // 정수를 입력받는 메소드

			if (num >= 1) {
				for (int i = num; i >= 1; i--) {
					System.out.print(i + " ");
				}
				return; // 메소드 빠져나가는 구문

			} else { // 1 미만의 숫자를 입력했을 경우
				System.out.println("1 이상의 숫자를 입력해주세요.");
			}
		}
	}
1이상의 숫자를 입력하세요 : 0
1 이상의 숫자를 입력해주세요.
1이상의 숫자를 입력하세요 : 6
6 5 4 3 2 1

 


 

문제 5. 1부터 사용자에게 입력받은 수까지의 정수들의 합을 출력하세요.

 

package com.yh.practice.chap02.loop;

import java.util.Scanner;

public class LoopPractice {

	public void practice5() {

		Scanner sc = new Scanner(System.in); // 스캐너 생성

		System.out.print("정수를 하나 입력하세요 : ");
		int num = sc.nextInt(); // 정수를 입력받는 메소드

		int sum = 0; 

		for (int i = 1; i <= num; i++) {
			sum += i;
			System.out.print(i);
			if (i < num) {
				System.out.print(" + ");
			} else {
				System.out.println(" = " + sum);
			}
		}
	}
정수를 하나 입력하세요 : 10
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55

 


 

문제 6. 사용자로부터 두 개의 값을 입력받아 그 사이의 숫자를 모두 출력하세요.

만일 1 미만의 숫자가 입력됐다면 "1 이상의 숫자를 입력해주세요."를 출력하세요.

 

package com.yh.practice.chap02.loop;

import java.util.Scanner;

public class LoopPractice {

	public void practice6() {

		Scanner sc = new Scanner(System.in); // 스캐너 생성

		System.out.print("첫 번째 숫자 : ");
		int num1 = sc.nextInt(); // 정수를 입력받는 메소드

		System.out.print("두 번째 숫자 : ");
		int num2 = sc.nextInt();

		if (num1 >= 1 && num2 >= 1) {
			for (int i = num1; i <= num2; i++) {
				System.out.print(i + " ");
			}
			for (int i = num2; i <= num1; i++) {
				System.out.print(i + " ");
			}
		} else { // 1 미만의 숫자를 입력했을 경우
			System.out.println("1 이상의 숫자를 입력해주세요.");
		}
	}
첫번째 숫자 5
두번째 숫자 10
5 6 7 8 9 10 

첫번째 숫자 10
두번째 숫자 5
5 6 7 8 9 10

 


 

문제 7. 위 문제와 모든 것이 동일하나, 1 미만의 숫자가 입력됐다면

"1 이상의 숫자를 입력해주세요"가 출력되면서 다시 사용자에게 값을 입력하도록 하세요.

 

package com.yh.practice.chap02.loop;

import java.util.Scanner;

public class LoopPractice {

	public void practice7() {

		Scanner sc = new Scanner(System.in); // 스캐너 생성

		while (true) { // 사용자에게 다시 값을 입력받을 수 있도록 조건식 true
			System.out.print("첫 번째 숫자 : ");
			int num1 = sc.nextInt(); // 정수를 입력받는 메소드

			System.out.print("두 번째 숫자 : ");
			int num2 = sc.nextInt();

			if (num1 >= 1 && num2 >= 1) {
				for (int i = num1; i <= num2; i++) {
					System.out.print(i + " ");
				}
				for (int i = num2; i <= num1; i++) {
					System.out.print(i + " ");
				}
				break; // 메소드 빠져나가는 구문

			} else { // 1 미만의 숫자를 입력했을 경우
				System.out.println("1 이상의 숫자를 입력해주세요.");
			}
		}
	}
첫 번째 숫자 : 3
두 번째 숫자 : 0
1 이상의 숫자를 입력해주세요.
첫 번째 숫자 : 3
두 번째 숫자 : 9
3 4 5 6 7 8 9 

첫 번째 숫자 : 9
두 번째 숫자 : 3
3 4 5 6 7 8 9

 


 

문제 8. 사용자로부터 입력받은 숫자의 단을 출력하세요.

 

package com.yh.practice.chap02.loop;

import java.util.Scanner;

public class LoopPractice {

	public void practice8() {

		Scanner sc = new Scanner(System.in); // 스캐너 생성

		System.out.print("숫자 : ");
		int dan = sc.nextInt(); // 정수를 입력받는 메소드

		System.out.println("===== " + dan + "단 =====");

		for (int i = 1; i < 10; i++) {
			System.out.printf("%d * %d = %d\n", dan, i, dan * i);
		}
	}
숫자 : 3
===== 3단 =====
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
3 * 5 = 15
3 * 6 = 18
3 * 7 = 21
3 * 8 = 24
3 * 9 = 27

 


 

문제 9. 사용자로부터 입력받은 숫자의 단부터 9단까지 출력하세요.

단, 9를 초과하는 숫자가 들어오면 "9 이하의 숫자만 입력해주세요."를 출력하세요.

 

package com.yh.practice.chap02.loop;

import java.util.Scanner;

public class LoopPractice {

	public void practice9() {

		Scanner sc = new Scanner(System.in); // 스캐너 생성

		System.out.print("숫자 : ");
		int dan = sc.nextInt(); // 정수를 입력받는 메소드

		if (dan <= 9) {
			for (dan = dan; dan < 10; dan++) { // 입력받은 숫자부터 9까지
				System.out.println("===== " + dan + "단 =====");

				for (int i = 1; i < 10; i++) {
					System.out.printf("%d * %d = %d\n", dan, i, dan * i);
				}
			}
		} else { // 9를 초과하는 숫자를 입력했을 경우
			System.out.println("9이하의 숫자만 입력해주세요.");
		}
	}
숫자 : 10
9이하의 숫자만 입력해주세요.

 

문제 10. 위 문제와 모든 것이 동일하나, 9를 초과하는 숫자가 입력됐다면

"9 이하의 숫자를 입력해주세요."가 출력되면서 다시 사용자가 값을 입력하도록 하세요.

 

package com.yh.practice.chap02.loop;

import java.util.Scanner;

public class LoopPractice {

	public void practice10() {

		Scanner sc = new Scanner(System.in); // 스캐너 생성

		while (true) { // 사용자에게 다시 값을 입력받을 수 있도록 조건식 true
			System.out.print("숫자 : ");
			int dan = sc.nextInt(); // 정수를 입력받는 메소드

			if (dan <= 9) {
				for (dan = dan; dan < 10; dan++) {
					System.out.println("===== " + dan + "단 =====");

					for (int i = 1; i < 10; i++) {
						System.out.printf("%d * %d = %d\n", dan, i, dan * i);
					}
				}
				return; // 메소드 빠져나가는 구문

			} else { // 9를 초과하는 숫자를 입력했을 경우
				System.out.println("9이하의 숫자만 입력해주세요.");
			}
		}
	}
숫자 : 10
9이하의 숫자만 입력해주세요.
숫자 :

 


 

문제 11. 사용자로부터 시작 숫자와 공차를 입력받아

일정한 값으로 숫자가 커지거나 작아지는 프로그램을 구현하세요.

단, 출력되는 숫자는 총 10개입니다.

 

package com.yh.practice.chap02.loop;

import java.util.Scanner;

public class LoopPractice {

	public void practice11() {

		Scanner sc = new Scanner(System.in); // 스캐너 생성

		System.out.print("시작 숫자 : ");
		int num1 = sc.nextInt(); // 정수를 입력받는 메소드

		System.out.print("공차 : ");
		int num2 = sc.nextInt();

		for (int i = num1; i < num1 + num2 * 10; i += num2) {
			System.out.print(i + " ");
		}
	}
시작 숫자 : 2
공차 : 5
2 7 12 17 22 27 32 37 42 47

 


 

문제 12. 정수 두 개와 연산자를 입력받고 입력된 연산자에 따라 알맞은 결과를 출력하세요.

단, 해당 프로그램은 연산자 입력에 "exit"라는 값이 들어올 때까지 무한 반복하며

exit가 들어오면 "프로그램을 종료합니다."를 출력하고 종료합니다.

또한 연산자가 나누기이면서 두 번째 정수가 0으로 들어오면

"0으로 나눌 수 없습니다. 다시 입력해주세요."를 출력하며,

없는 연산자가 들어올 시 "없는 연산자입니다. 다시 입력해주세요."라고 출력하고

두 경우 모두 처음으로 돌아가 사용자가 다시 연산자부터 입력하도록 하세요.

 

package com.yh.practice.chap02.loop;

import java.util.Scanner;

public class LoopPractice {

	public void practice12() {

		Scanner sc = new Scanner(System.in); // 스캐너 생성

		while (true) { // 무한 반복을 위한 조건식
			System.out.print("연산자(+, -, *, /, %) : ");
			String op = sc.nextLine(); // 문자열을 엔터 전까지 입력받는 메소드

			if (op.equals("exit")) { "exit"를 입력했을 경우
				System.out.println("프로그램을 종료합니다.");
				return; // 메소드 빠져나가는 구문 => 프로그램 종료
			}

			System.out.print("정수1 : ");
			int num1 = sc.nextInt(); // 정수를 입력받는 메소드

			System.out.print("정수2 : ");
			int num2 = sc.nextInt();

			sc.nextLine(); // 버퍼에 남아있는 엔터 제거를 위한 메소드

			switch (op) {
			case "+":
				System.out.printf("%d %s %d = %d\n", num1, op, num2, num1 + num2);
				return;
			case "-":
				System.out.printf("%d %s %d = %d\n", num1, op, num2, num1 - num2);
				return;
			case "*":
				System.out.printf("%d %s %d = %d\n", num1, op, num2, num1 * num2);
				return;
			case "%":
				System.out.printf("%d %s %d = %d\n", num1, op, num2, num1 % num2);
				return;
			case "/":
				if (num2 == 0) { // 두 번째 정수가 0일 경우
					System.out.println("0으로 나눌 수 없습니다. 다시 입력해주세요.");
					break; // 자신이 포함된 가장 가까운 반복문을 빠져나가는 구문
				} else
					System.out.printf("%d %s %d = %d\n", num1, op, num2, num1 / num2);
				return;
			default: // 없는 연산자 입력했을 경우
				System.out.println("없는 연산자입니다. 다시 입력해주세요.");
				break;
			}
		}
	}
연산자(+, -, *, /, %) : >
정수1 : 14
정수2 : 7
없는 연산자입니다. 다시 입력해주세요.
연산자(+, -, *, /, %) : 

연산자(+, -, *, /, %) : /
정수1 : 20
정수2 : 0
0으로 나눌 수 없습니다. 다시 입력해주세요.
연산자(+, -, *, /, %) : 

연산자(+, -, *, /, %) : exit
프로그램을 종료합니다.