본문 바로가기

Java

반복문 (for expression, while)

for

반복문

계속 stack이 열여요. 세미콜론으로 하나의 인자를 구분해요.

 

package array03;

public class ArrayEx02 {
/**
 * for문은 조건을 검사한다. 증가는 스택이 끝날 때!!
 * 초기값은 최초에만 실행된다.
 */
	public static void main(String[] args) {
		for (int i = 0; i < 10; i++) {
			System.out.println(i);			
		}//stack이 끝날 때 증감식			
	}
}

main  method 안에 표현식(exprression)은 함수처럼 생겼지만 호출하지 않아도 실행합니다. 괄호가 끝나면 종료(stack).

 

package array03;

public class ArrayEx01 {

	public static void main(String[] args) {
		
		int num = 1;		
		for (long i = 2L; i <= 2000000000000000000L; i=i*2) {
			System.out.println("2의"+num+"승 : "+i);
			num++;
		}
//언제까지가 정해져있어요.
		
		
		while(true) {
			
		}
//무한 반복해요.
		
	}

}

노가다를 통해서 패턴을 찾아서 할 수있어요.

 

while

무한반복 (그래서 어느 정도 시간을 정해서 사용해야함

이유는 너무 많은 자원을 사용하기 때문에)

빠져나갈 때 쓰는 방법 2가지 있음.

빠져나갈 때는 break; 씁니다.

boolean confirm

 

DaeMon 프로세스 - 끝이 없이 계속 도는 것

: 서비스 요청에 대해 응답하는 영원한 백그라운드 프로세스. (계속 감시하는 애)

 

리스너(계속 듣고 있는 애) 그래서 while로 계속 돌아갑니다.

 

데몬이 리스너한테 notify

 

 

package array03;

import java.util.Scanner;

public class Gugudan2 {
//사용자로 부터 입력받은 구구단을 프로그램 완성!!
	public static void main(String[] args) {
		System.out.println("구구단을 시작합니다.");
		boolean confirm = true;
		while (confirm) {
			System.out.println("숫자를 입력하세요 2~9");
			Scanner sc = new Scanner(System.in);
			int num = sc.nextInt();

			/*
			 * for (int n = num; n < 10; n++) { for (int i = 1; i < 10; i++) {
			 * System.out.println(n + "*" + i + "=" + (n * i)); } System.out.println();
			 */

			for (int i = 1; i < 10; i++) {
				System.out.println(num + "*" + i + "=" + num * i);
			}
			System.out.println("계속 진행할까요? y or n");
			String check = sc.next();
			if (check.equals("n")) {
				//break;// 가장 가까운 반복문을 빠져나갈 때 사용
				confirm = false;
			}
		}
		System.out.println("구구단 프로그램 종료");
	}// end of main
}// end of class

boolean confirm

 

 

package array03;

public class Coin {
	// 남은 동전의 개수를 구하는 프로그램(500, 100, 50, 10)
	//2680
	public static void main(String[] args) {
		int money = 2680;
		int count = 0;
		int coin[]= {500,100,50,10};
		System.out.println("시작 금액: "+money);
		
		for (int i = 0; i < coin.length; i++) {
			count = money/coin[i];
			money = money%coin[i];
			System.out.println(coin[i]+"원 개수 :"+count);
			System.out.println("남은 금액 :"+money);
		}
	}
}

 오늘 노가다로 적은 코드들을 refactorying 해봄.

방법은 1. 노가다 코드

2. 반복되는 코드 분석 -> 상수와 변수 구분

3. for문 넣기