package com.test.java;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Ex23_for {
public static void main(String[] args) throws NumberFormatException, IOException {
/*
반복문
- 특정 코드를 개발자가 원하는 횟수만큼 반복
- 생산성 향상 + 유지보수성 향상
for (초기식; 조건식; 증감식) {
구현부;
}
*/
// m1();
// m2();
// m3();
// m4();
// m5();
// m6();
// m7(); 여기까지 기본
// m8(); // 특별
// m9();
// m10();
// m11();
// m12();
m13();
}//main
private static void m13() throws NumberFormatException, IOException {
// 요구사항] 숫자 5개 입력(1~10 사이) > 가장 큰 수?
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int max = 1; //입력받을 숫자 중 가장 작은 숫자로 초기화
int min = 10; // 가장 큰 수
for (int i=0; i<5; i++) {
System.out.print("숫자: ");
int num = Integer.parseInt(reader.readLine());
if (num > max) {
max = num; // max는 1등 자리
}
if (num < min) {
min = num;
}
System.out.println("max: " + max);
System.out.println("min: " + min);
}
System.out.println("max: " + max);
}
private static void m12() {
// 1 + 2 + 3 = 6
int sum = 0;
for (int i=1; i<=3; i++) {
System.out.print(i + " + "); // 과정 기록
// 마지막 바퀴에는 출력 되면 안됨
sum += i;
}
System.out.println("\b\b= " + sum);
// 이클립스에는 원래 안됨
}
private static void m11() {
//난수 만들기
//- 임의의 수 만들기
//1. Math 클래스
//2. Random 클래스
// System.out.println(3.14);
// System.out.println(Math.PI);
// Returns a double value with a positive sign, greaterthan or equal to 0.0 and less than 1.0.Returned
// 0 이상 ~ 1 미만
// System.out.println(Math.random());
for (int i=0; i<10; i++) {
// System.out.println(Math.random());
// 가공
//0.0 > 0
//0.1 > 1.0 > 1
//0.5 > 5.0 > 5
//0.567 > 5.67 > 5
//0.9 > 9.0 > 9
System.out.println((int)(Math.random() * 10));
// 소수점 이하 사라짐 0 ~ 9
//주사위 (1 ~ 6)
// 랜덤값 * 숫자 > 무조건 0에서 숫자보다 적은 숫자가 나온다
System.out.println((int)(Math.random() * 6) + 1);
// 5~8
System.out.println((int)(Math.random() * 4) + 5);
}
}
private static void m10() {
// 학교 > 선생님 + 학생 상담 (30명)
for (int i=1; i<=30; i++) {
// if (i >= 16) {
// break;
//}
if (i == 10 || i == 12) {
continue;
}
System.out.println(i + "번 학생 상담중");
}
}
private static void m9() {
// break > 현재 자신이 속한 제어문을 탈출해라!!
// > if문 제외
// continue > 이번 반복을 중단하고 다시 시작으로 이동해라 !!
// break > 루프 완전 중단
// continue > 이번만 건너뛰기
for (int i=1; i<=10; i++) {
if (i == 5) {
break; // 조건을 확인하고 나가라 !! for 문
}
System.out.println(i);
// break; // 반복문의 의미가 없음
}
for (int i=1; i<=10; i++) {
if (i == 5) {
continue; // 하던일을 멈추고 다시 위로 올라가라
// 그래서 5가 아닌 6
}
System.out.println(i);
}
}
private static void m8() throws NumberFormatException, IOException {
// 무한 루프, Infinite loop
// 1. 사용자 실수
// 2. 사용자 의도 > 일부러
// int num = Integer.MIN_VALUE;
// System.out.println();
// num--;
// System.out.println(num);
// 21억 회전
// for (int i=0; i<10; i--) {
// System.out.println("실행문");
// }
//무한 루프 생성하기
//for (int i=0; true; i++) {
// System.out.println("실행문");
//} // 조건문이 루프 결정
// for (int i=0; ; i++) {
//System.out.println("실행문");
// }
// for (;;) {
//System.out.println("실행문");
//}
// 회전을 몇번해야 할지 모를 때? > 무한 루프
// 사용자 숫자 입력 > 합?
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int sum = 0;
for (;;) {
System.out.print("숫자: ");
int num = Integer.parseInt(reader.readLine());
if (num == 0) {
break; // 특정 조건에서 for 문 빠져나가기
}
sum += num;
}
System.out.println(sum);
}
private static void m7() throws NumberFormatException, IOException {
//요구사항] 구구단 출력
/*
5 x 1 = 5
5 x 2 = 10
5 x 3 = 15
..
5 x 9 = 45
*/
for (int i=1; i<=9; i++) {
System.out.printf("5 x %d = %2d\n", i, 5 * i);
}
// 요구사항] 사용자가 원하는 단을 출력
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.print("단: ");
int dan = Integer.parseInt(reader.readLine());
for (int i=1; i<=9; i++) {
System.out.printf("%d x %d = %2d\n", dan, i, dan * i);
}
System.out.println();
}
private static void m6() throws NumberFormatException, IOException {
// 요구사항] 사용자가 입력한 숫자들의 합? (10개)
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int sum = 0;
for (int i=0; i<10; i++) {
System.out.print("숫자: ");
int num = Integer.parseInt(reader.readLine());
sum += num;
} System.out.println(sum);
}
private static void m5() throws NumberFormatException, IOException {
//요구사항] 1 ~ 사용자가 입력한 숫자까지 합?
int sum = 0;
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.print("숫자: ");
int num = Integer.parseInt(reader.readLine());
for (int i=1; i<=num; i++) {
sum += i;
}
System.out.println(sum);
}
private static void m4() {
//요구사항] 1~10까지의 합 > 누적 연산
//누적 변수 (0으로 초기화)
int sum = 0;
//sum = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10;
//System.out.println(sum);
for (int i=1; i<11; i++) {
sum = sum + i;
// i(1) > 1 = 0 + 1
// i(2) > 3 = (0 + 1) + 2
// i(3) > 6 = (0 + 1 + 2) + 3
// i(4) > 10 = (0+ 1+ 2+ 3) + 4
// 누적변수는 0으로 초기화해야 하는 이유
// ..
// i(10) > 55 = (0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9) + 10
}
System.out.println(sum);
}
private static void m3() {
//반복문 > 루프 변수!!(***************************)
// 요구사항] 숫자 1~10까지 출력
System.out.println(1);
System.out.println(2);
System.out.println(3);
System.out.println(4);
System.out.println(5);
System.out.println(6);
System.out.println(7);
System.out.println(8);
System.out.println(9);
System.out.println(10);
System.out.println();
int num = 1;
System.out.println(num);
num++;
System.out.println(num);
num++;
System.out.println(num);
num++;
System.out.println(num);
num++;
System.out.println(num);
num++;
System.out.println(num);
num++;
System.out.println(num);
num++;
System.out.println(num);
num++;
System.out.println(num);
num++;
System.out.println(num);
System.out.println();
num = 1;
for (int i=0; i<10; i++) {
System.out.println(num);
num++;
}
System.out.println();
// 루프 변수 > 원하는 수열을 제공
for (int i=1; i<11; i++) {
System.out.println(i);
}
System.out.println();
//홀수 출력
for (int i=1; i<11; i+=2) {
System.out.println(i);
}
System.out.println();
//짝수 출력
for (int i=2; i<11; i+=2) {
System.out.println(i);
}
System.out.println();
//1~ 100 사이의 7의 배수를 출력
for (int i=7; i<101; i+=7) {
System.out.println(i);
}
System.out.println();
}
private static void m2() {
//반복문 > 회전수 제어?
// i: 루프변수
for (int i=1; i<=5; i++) {
System.out.println("실행문");
}
System.out.println();
for (int i=5; i<=9; i++) {
System.out.println("실행문");
}
System.out.println();
for (int i=10; i>=6; i--) {
System.out.println("실행문");
}//
System.out.println();
for (int i=1; i<=21; i+=5) {
System.out.println("실행문");
}
System.out.println();
//가장 보편적인 형태, 0 부터 시작하기
for (int i=0; i<5; i++) {
System.out.println("실행문");
}
System.out.println();
}
private static void m1() {
//요구사항] "안녕하세요." x 5회 출력
System.out.println("안녕하세요.");
System.out.println("안녕하세요.");
System.out.println("안녕하세요.");
System.out.println("안녕하세요.");
System.out.println("안녕하세요.");
System.out.println();
hello(); hello(); hello(); hello(); hello();
System.out.println();
// 순서(***)
// 1. int i=1; > 초기식
// 2. i<=5; > 조건식
// 3. 구현부 실행
// 4. i++ > 증감식 (i > 2....)
// 5. i<=5;
// 6. 구현부 실행
// 7. i++
// 8. i<=5;
for (int i=1; i<=5; i++) {
System.out.println("안녕하세요.");
} // 반복문의 특징 : 끝블럭을 만나면 다시 위로 올라간다
}
private static void hello() {
System.out.println("안녕하세요.");
}
}