1. for

 for 문의 핵심내용은 반복한다는 것입니다. 만약 같은 변수나 문자를 여러번 출력해야 하는데 for문을 사용하지 않으면 System.out.println();을 출력하고자 하는 만큼 코딩해야 할 것입니다. 하지만 for문을 이용하면 매우 간단하게 줄일 수 있습니다. 아래의 형식을 보도록 하겠습니다.

 

 - for ( 초기화; 조건; 증감 ) {

      내용;

   }

 

 위의 초기화 부분에서는 주로 for문에서 사용될 변수의 초기화가 이루어집니다. 이어서 조건에서는 if문에서와 같이 조건이 작동합니다. 이후 증감부분에서는 초기화에 사용되었던 변수의 증감이 이루어지게 됩니다. 하지만 이러한 초기화, 조건, 증감의 부분에서는 꼭 필요한 것은 아닙니다. 각 영역은 공백이 될 수도 있습니다. 아래에서 특징을 살펴보도록 하겠습니다.

 

 - 초기화 : 공백 가능, 변수 선언과 동시에 초기화 가능( int i = 0 ), 이미 선언된 변수라면 초기화 작업만 가능

 - 조건 : 공백 가능, 논리형 조건 사용 가능

 - 증감 : 공백 가능, 증감 연산자의 사용 가능( x++, ++x ), 수식 사용 가능( x += y )

 

 위처럼 각 영역은 공백이 가능하기도 하고 굳이 정수형이 아닌 String형도 가능하기도 합니다. 그렇다면 이번에는 for문의 실행과정에 대해 알아보도록 하겠습니다.

 

 - for ( ① ; ② ; ④ ) {
      ③;

   } 

 

 이렇게 숫자의 순서대로 작동하게 됩니다. 우선 초기화 부분을 거쳐 초기화가 이뤄지고 난 후 조건에 들어가서 해당 조건이 참인지 거짓인지를 판별합니다. 이후 해당 조건이 참이라면 3번의 내용 부분으로 가서 내용을 수행한 후 증감인 4번으로 가서 증감을 수행하게 됩니다. 이러한 과정을 반복하며 2번에서 조건이 거짓이 나올때까지 반복하게 됩니다. 하지만 이때 1번인 초기화 부분은 처음에만 실행되며 한바퀴를 돌고 난 후에는 작동하지 않습니다.

 

 이번에는 삼각형을 출력하는 코드를 살펴보도록 하겠습니다.

public class Triangle {

	public static void main(String[] args) {
		
		int i=0,j=0;
		
		for(i=0;i<5;i++) {
			for(j=0;j<=i;j++) {
				System.out.print("*");
			}
			System.out.println();
		}

	}
}

 이 코드는 프로그래밍을 처음 배울 때 쉽게 접하는 삼각형을 출력하는 코드입니다. 이 코드를 살펴보면 for문이 2개가 중첩돼있는 것을 알 수 있습니다. 이는 삼각형을 한줄한줄 순차적으로 표시하기 때문에 이렇게 작성하게 되는 것입니다. 그렇다면 이번에는 좀 다른 코드를 살펴보도록 하겠습니다.

public class ABCD {

	public static void main(String[] args) {
		
		for(char i='A'; i<='Z'; i++) {
			System.out.print(i);
		}
	}

}

 위의 코드는 알파벳을 A부터 Z까지 일렬로 출력하는 프로그램입니다. 이처럼 for문의 초기화, 조건 부분에는 꼭 숫자가 아닌 문자가 와도 상관없습니다.

 

2. while

 while문은 for문과 비슷한 개념의 반복문이지만 while문에는 초기화와 증감이 존재하지 않습니다. 우선 아래의 형식을 보도록 하겠습니다.

 

 - while( 조건 ){
      내용;

   }

 

 위의 while문의 조건에는 논리형 조건식과 수치형 조건식 모두 사용이 가능합니다. 또 C언어에서는 while(1)이 가능했지만 자바에서는 이를 허용하지 않기 때문에 while(true)와 같이 true혹은 false로 대입해주어야 합니다.

 

3. do ~ while

 do~while은 while과 거의 흡사합니다. 하지만 차이점은 이 do~while문은 안의 내용을 우선 한번 실행하고 난 후 조건을 따지게 되지만 while문은 조건을 우선적으로 따져서 조건이 거짓이라면 안의 내용부를 실행조차 하지 않게 됩니다. 그렇다면 이 do~while문의 예제를 보도록 하겠습니다.

import java.io.*;

public class Round06_Ex07 {

	public static void main(String[] args) throws IOException {
		
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		int kor = 0, eng = 0, mat = 0, tot = 0;
		char point = 0;
		float ave = 0.0f;
		
		do {
			System.out.print("국어 = ");
			kor = Integer.parseInt(in.readLine());
		} while(kor < 0 || kor > 100);
		
		do {
			System.out.print("영어 = ");
			eng = Integer.parseInt(in.readLine());
		} while(eng < 0 || eng > 100);
		
		do {
			System.out.print("수학 = ");
			mat = Integer.parseInt(in.readLine());
		} while(mat < 0 || mat > 100);
		
		tot = kor + eng + mat;
		ave = tot/3.0f;
		
		switch((int)(ave/10)) {
		case 10:
		case 9 : point = 'A'; break;
		case 8 : point = 'B'; break;
		case 7 : point = 'C'; break;
		case 6 : point = 'D'; break;
		default : point = 'F';
		}
		
		System.out.println();
		System.out.println("총점 = "+tot);
		System.out.printf("평균 = %.2f\n", ave);
		System.out.println("학점 = "+point+"학점");

	}

}

 위의 코드는 각 영역의 점수를 입력받아 총점과 평균을 계산하고 그에 따른 학점을 계산하는 프로그램입니다.

'프로그래밍 > JAVA' 카테고리의 다른 글

자바 메서드 ( method )  (0) 2019.04.21
자바 제어문 - 문제  (0) 2019.04.19
제어문 - 1 ( if, switch-case-break )  (0) 2019.04.17
자바 연산자 - 문제  (0) 2019.04.16
자바 연산자 - 2  (0) 2019.04.15

+ Recent posts