Java 제어문

zihooy·2023년 5월 3일
0

Java Programming

목록 보기
2/21
post-thumbnail

Java의 기본 문법 중 제어문을 간단한 설명과 예제를 통해 알아보자

🏹 for 문 vs while 문

Java의 제어문에는 for, while, if, switch 문이 있다.
그 중 for문과 while문을 어떤 경우에 사용해야 하는지 알아보자.

간단하게는 다음과 같이 나뉜다.

프로그램의 반복 횟수를 알고 코드를 작성한다면 >>> for문
프로그램의 반복 횟수를 모르고 코드를 작성한다면 >>> while문

public class hello {
	public static void main(String[] args) {
		// 1) 반복횟수를 알고 프로그램을 작성할 때는 for
		for (int i = 0; i < 10; i++) {
			System.out.println(100);
		}
		// 2) 반복횟수를 모르고 프로그램을 작성할 때는 while
		// 예시: 우박 수열 프로그램 
		int n = 52;
		while(true) {
			System.out.println(n);
			if(n%2 == 0 ) {
				n = n/2;
			} else {
				n = n*3+1;
			}
			if(n == 1) {
				System.out.println("exit");
				break;
			} 
			
		}
	}
}

위의 예시에서 ,
1) 프로그램의 반복 횟수가 100이라는 것을 알고 코드를 작성했기 때문에 >>> for문을 사용하였다.
2) 우박 수열의 경우, 어떤 수를 input에 넣어도 1을 return한다. 하지만, 1이 나오기까지 프로그램이 몇 번 반복될지는 모르게 때문에 >>> while문을 사용하였다.

🏹 for문의 바람직한 사용법

아래의 3가지 조건을 모두 만족시켜 한다.

  1. for문의 초기값은 0 또는 1이어야 한다.
  2. for문의 조건식은 < 또는 <=이어야 한다. >, >= 등다른 연산자 사용을 최소화 할 것 !
  3. for문의 증감식은 ++이어야 한다.

이렇게 해야, for문이 몇 번 반복되는지 한눈에 파악할 수 있어 유지보수가 간편하기 때문이다.

public class hello {
	public static void main(String[] args) {		
			// 바람직하지 않은 코드 >> 몇 번 도는지 알 수 없음 ! 결과는 나오지만 유지보수가 되지 않음 
			// for (int i = 7; i >=100 10; i+=3) 

			// 정석 1: num만큼 반복 
			for (int i = 0; i < num; i++) 

			// 정석 2: num만큼 반복 
			for (int i = 1; i <= num; i++) 

			// 정석 3: 2*num + 1만큼 반복 
			for (int i = -num; i <= num; i++) 

			// 정석 4: 2중 for 문에서는 int j = i로 시작 가능 
			for (int i = 0; i <n2; i++)  {
				for (int j = i; j < n1; j++) {				
				}
			}
    }
}

🏹 참고) for문과 세미콜론(;)

for문은 {}을 통해 범위를 지정하기 때문에 세미콜론(;)이 생략될 수 있다.
또한 for문 안의 코드가 단일 코드인 경우도 생략 가능하다.

public class hello {
	public static void main(String[] args) {	
			// 세미 콜론이 없어도 가능 (2중 for문)
			for (int i = 0; i <n2; i++)  
				for (int j = i; j < n1; j++) 
					System.out.println();
                    
			// 세미 콜론이 없어도 가능 (위 코드와 동일)
			for (int i = 0; i < n2; i++)  
			for (int j = i; j < n1; j++) 
			System.out.println();		
			
			int i;
			for (i = 0;  i < 10; i++);
			System.out.println(i);			
	}
}
profile
thisIsZihooLog

0개의 댓글