본문 바로가기

콤퓨타/Programming) 왕초보 자바

09. (Loops and Conditions) Loop Conditions

 

 

Loops는 반복작업이 필요할 때 사용함. 그야말로 컴퓨터스러운 업무임. 기본적으로 동일한 작업을 반복하게 함으로써 인간은 그동안 손 놓고 있어도되는... ㅎ 

 

여튼 기본 코드는 이러하다. 

package application;

public class App {

	public static void main(String[] args) {

		while (true) {

			System.out.println("Hello");

		}

	}

}

 

여기서 while (true) {} 는 정확히 배우지는 않았지만 쌤의 말씀에 의하면

기타 조건이 붙지 않은 상태의 while(true)는 basically while(forever){}과 같은 의미

 

그래서 저대로 출력하면 텍스트가 무한정 출력되기 때문에 콘솔 상단의 멈춤 버튼을 눌러줘야 한다.  

끝도 없는 Hello의 향연

 

 

 


이걸 조금 고급지게 표현해보면 

package application;

public class App {
	public static void main(String[] args) {
		
		int counter = 0; 
		
		while(true) {
			System.out.printf("Counter: %d\n", counter);
		}
		
		
	}

}

이렇게도 나온다. 

counter 변수의 값은 0 이고 

counter를 출력하는데 그 값을 %d 자리에 넣고 계속 한 줄 씩 띄어줘. 

라고 주문하면 아래와 같이 

Counter: 은 문자열 그대로, 

그리고 그 변수의 값은 int counter 에서 지정해준 것 처럼 0으로 무한정 출력된다. 

 


일단 여기까지가 loops의 기본 연습이고, 여기에서 counter 값을 올리고싶다? 

package application;

public class App {
	public static void main(String[] args) {
		
		int counter = 0; 
		
		while(true) {
			System.out.printf("Counter: %d\n", counter);
			counter = counter +1; 
			
		}
		
	}

}

 


그럼 counter = counter +1;  이렇게 작성하여 counter의 값이 1개씩 올라간다고 설정해주면

컴퓨터가 엄청 열심히 한 땀 한 땀 숫자를 올려가며 출력해줌.  

(역시나 별도로 멈춤 클릭 해줘야한다.) 

정말이지 성실하기 짝이없군

 

그런데 변수 값을 1씩 늘리려면 (이런 코드가 많이 쓰이기 때문인것 같다) 아래처럼 축약해서도 쓴다. 

counter++;

 

저렇게 써두면  counter = counter +1; 과 동일한 의미임 ㅇㅇ. 

 


 

이번에는 루프에 조건을 줘 본다.

package application;

public class App {
	public static void main(String[] args) {
		
        int counter = 0; 
		
		while(counter <10) {
			System.out.printf("Counter: %d\n", counter);
		
			// counter = counter +1; 
			counter++;
			
		}
		
	}

}


while (true) 가 아닌, 

while (counter<10) 이라고 조건을 준다면

counter 가 1씩 증가하기는 하지만, 10보다 작다라는 조건이 있으므로 

결과물은 10 전까지 출력된다.

 

멈춤을 클릭할 필요가 없이 9에서 알앗어 멈추는 똑똑한 컴퓨터 ^^

 

 

 


Hello 5번 출력하기를 숙제로 내주셔서 

아래와 같이 그냥, 맨 처음에 적어두 ㄴcounter 재활용 하면 되지 않을까 라는 생각에 그냥 바로 밑에 붙여봤는데

package application;

public class App {
	public static void main(String[] args) {
		
		int counter = 0; 
		
		while(counter <10) {
			System.out.printf("Counter: %d\n", counter);
		
			// counter = counter +1; 
			counter++;
			
			while (counter <5) {
				System.out.println("Hello");
			}
		}
		
	}

}

 

이렇게 하니 앞에 counter 출력물은 다 지워버리고 Hello만 무한정으로 출력.... ㅡㅡ;; 

되어서 아래와 같이 그냥 아예 다 지우고 새로 작성 

package application;

public class practice {
	
	public static void main(String[] args) {
		
		int counter = 0; 
		
		while(counter<5) {
			System.out.println("Hi Hello How are ya?");
			counter++; 
			
		}
			
			
	}

}

 

이렇게 

일단은 성공ㅋㅋㅋㅋ

 


 

하지만 아까 안된게 찝찝해서. 

 

 

package application;

public class App {
	public static void main(String[] args) {
		
		int counter = 0; 
		
		while(counter <10) {
			System.out.printf("Counter: %d\n", counter);
		
			// counter = counter +1; 
			counter++;
		}
					
			while (counter <6) {
				System.out.println("Hello");
		counter ++; 
			}
		}
		
	}

 

혹시 {} 이 브라켓으로 while문을 별도로 썼어야 했을까? 하여 아래처럼 while문을 하나 더 써서 붙여봤따. 

그랬더니 이번에는 헬로우는 빼고 위에 있는 카운터만 9번까지 뜬다. 

 

 

^^....좀... 어떻게든 얻어걸리려고 했더니만 안되네.

지피티에게 물어볼 기력도 오늘은 없으므로 일단 종료

해피코딩... ^^