국비/Java

[05-1] Java - 반복문 (for, while, do-while)

제발 취업하게 해주세요 2022. 4. 13. 22:10
❗for 문
* 괄호 안에 반복을 지정하는 부분이 있고,
* 초기식; 조건식; 증감식 세 가지로 이루어진다. // 반복 횟수를 지정하는 요소들
* ;; 각각 세미콜론으로 구분한다!

* [표현법]
* for(초기식; 조건식; 증감식) {
* 반복적으로 실행시키고자 하는 코드
* }

* 초기식 : 반복문이 시작될 때 "초기에 단 한 번만 실행될" 구문
*
* 반복문에서 사용할 변수를 선언하고 초기화하는 구문 => int i = 0
* 변수 i, j, k 주로 사용

* 조건식 : "반복문이 실행될 조건"을 작성하는 구문
*
* 조건식이 true일 경우 반복문 실행
* 조건식이 false일 경우 반복문을 멈추고 반복문 밖으로 빠져나옴 => i < 10;
* - 증감식 : "반복문을 제어하는 변수 값"을 증감시키는 구문
* 보통 초기식에서 선언된 변수를 가지고 증감식을 작성한다.
* 이때, 증감연산자가 주로 쓰임 => i++ i--

public void method5() { //메소드5 시작
		
		System.out.println("중첩 for문 \n");
		/*for(int i = 1; i <=5; i++) {
			System.out.println("*");
		}*/
		
		for(int i = 1; i <= 5; i++) {
			for(int j = 1; j <=5; j++) {
				System.out.print("*");
			}
			System.out.println("");
		}
		System.out.println("-----------------------------------------");	
		System.out.println("for문 안에 if문 쓰기");
		
		for(int i = 0; i < 30; i++) {//for 시작
			System.out.println((i + 1) + "번 째 반복입니다");
			
			// if문으로 10번째 반복마다 ☆ 출력해주기
			
			if((i + 1) % 10 == 0) {
				System.out.println("☆");
			}
			
		} // for 끝
	} //메소드5 끝
// 실습!! 사용자한테 단을 입력받아서 구구단을 출력해보자
	
	public void gugudan() {
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("[구구단] 단을 입력해주세요.");
		int dan = sc.nextInt();
		
		for(int i = 1; i <= 9; i++) {
			System.out.println(dan + " X " + i + " = " + (dan * i));
		}
	}// 구구단 끝
❗while 문
* [표현법]
초기식; // 필수는 아님
while(조건식) {
반복적으로 실행할 코드; // a
증감식;// 필수는 아님
}

* 괄호 안에 조건식이 true일 경우 해당 구문(a)를 반복적으로 실행
* while(true) >> 반복을 무조건 시킬거야!!
public void method3() { //메소드3시작
		// 1부터 100까지 짝수만 더하자
		// 1부터 100까지 더한 합계 출력 -> 1차 문제 해결
		int i = 1;
		int sum = 0;

	/*	while(i <= 100) {
			sum += i;
			i++;
		}
		System.out.println(sum);*/
		
		// 1 ~ 100 짝수만 더하기
		while(i <= 100) {
			if(i % 2 == 0) {
				sum += i;
			}
			i++;
		}
		System.out.println(sum);
		
	}//메소드3 끝
    
    
    // 실습 홀수만 출력
    public void method4() { //메소드 4
		
		int i = 1;
		int sum = 0;
		
		while(i <= 100) {
			if(i % 2 == 1) {
				sum += i;
			}// if끝
			i++;
		}// while 끝
		System.out.println(sum);
	}// 메소드4 끝

‼️ Math.random();
* random : 무작위

* 무작위 숫자를 얻고 싶을 때
Math라는 클래스의 random() 메소드를 활용!

* Math.random() 결과 값 : 0.0 ~ 0.99999999999999999999999.........

* (int)(Math.random * 몇개의랜덤값) + 시작수;
>> 시작수 ~ 몇 개의 랜덤값을 얻고 싶을 때 공식!
public void method5() {//메소드5
		
		// 1부터 랜덤한 수 (1~10)까지 모두 더하는 총 합계

		// 1단계. random()가 잘 작동되나 ?? 호출해보기
		double random = Math.random();
		System.out.println("random : " + random);
		
		// 2_1단계. 결과값에 10을 곱하면
		// 			0.0 ~ 9.999999999999...
		// 2_2단계. int형으로 강제형변환을 하면?
		//			0 ~ 9
		// 2_2단계. 범위를 맞추기 위해 +1을 해주면?
		//			1 ~ 10
		// int(Math.random * 10) + 1
		// (int)(Math.random * 몇개의랜덤값) + 시작수;
		
		//random 적용
		int random2 = (int)(Math.random() * 10) + 1;
		System.out.println("random2 : " + random2);

		System.out.println("---------------------------------------");	
	
    	// 3단계. 누적합 구하기
		// 1부터 랜덤한 수 (1~10)까지 모두 더하는 총 합계
		int i = 1;
		int sum = 0;
		
		while(i <= random2) {
			sum += i;
			i++;
		}
		System.out.println("1 ~ random2까지 더한 결과 : " + sum);
		// 보통 반복횟수가 명확할 때 for문을 사용, 명확하지 않을 때는 while문 사용	
	}//메소드5끝
public void method6() { // 메소드6 시작
		
		// 로또규칙 ver.1
		// 번호 범위 : 1 ~ 45
		// 6개 선택
		
		// 배열 맛보기 int형 배열 int[], 참조자료형, 주소값이 들어감 >> [I@7852e922
		int[] lotto = new int[6];//index 0~5 => 6개

		// (int)(Math.random() * 몇개의랜덤값) + 시작 수
		// random 1 ~ 45
		
		// lotto[0] = (int)(Math.random() * 45) + 1
		// lotto[1] = (int)(Math.random() * 45) + 1
		// lotto[2] = (int)(Math.random() * 45) + 1
		// lotto[3] = (int)(Math.random() * 45) + 1
		// ...
		// lotto[5] = (int)(Math.random() * 45) + 1
		
		int i = 0;
		while(i < 6) {
			lotto[i] = (int)(Math.random() * 45 + 1);
			i++;
		}
		// Arrays.toString(배열이름); => 배열 이름 넣는 메소드, import 필요
		System.out.println(lotto); // [I@7852e922 >> 배열의 주소값
		System.out.println(Arrays.toString(lotto));
		
	}// 메소드6 끝
❗do-while문
* 별도의 조건 검사 없이 무조건 1회는 실행!
> 조건이 맞지 않더라도 한 번은 수행

* 나머지는 while문과 동일

* [표현법]
* 초기식; // 필수 아님
* do {
* System.out.println("실행해라")
* 증감식; //필수 아님
* } while(조건식);

* while문은 처음 수행할 때도 조건식 검사 후 true여야 실행
* do-while의 첫 실행은 별도의 조건검사 없이 무조건 한 번 실행!!

public void method1() { // 메소드1
		// 애초에 조건이 맞지 않아도 한 번은 실행!!!
		
		int num = 1; //초기식
		
		do {
			System.out.println("조건 안 맞지롱");
		}while(num == 0);
		
	}//메소드1 끝