[과제] 반복문
마지막 문제 다 풀었는데 버퍼에 남아있는 엔터 제거 안 해서 헛고생했다...
조건문 문제 풀 때도 그래서 까먹지 말자고 다짐했는데,,
이 정도 했으면 앞으로는 실수 안 하겠지,,? 원래 인간은 실수하면서 배우는 거임
문제 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
프로그램을 종료합니다.