반복문 : 조건식에 의해 명령을 반복적으로 실행
for문은 반복의 횟수가 정해져 있는 경우,
while문은 반복의 횟수가 정해져 있지 않은 경우 사용
반복의 횟수가 정해져 있는 경우 사용한다.
for(초기화식; 조건식; 증감식) {
반복 실행될 명령(실행문)...;
}
//for() 안에는 반드시 ;를 두개 사용*
//초기식 및 증감식은 ,를 이용하여 여러 개 선언 가능
흐름 : 초기화식 > 조건식 > 명령/실행문 > 증감식 > 조건식 > 명령 > 증감식 > 조건식 > 명령...
//1부터 5까지 합을 구해보자
int sum=0;
sum=sum+1;
sum=sum+2;
sum=sum+3;
sum=sum+4;
sum=sum+5;
System.out.println("1~5의 합:" +sum);
//=> 5개의 실행문, 1~100으로 늘어나면 실행문도 늘어난다
//1~100까지의 합을 for문을 사용해서 구하기
for(int i=1; 1<=100; i++) {
sum+=i;
}
//=> 100번 반복
초기화식 : 조건식, 실행문, 증감식에서 사용할 변수를 초기화하는 역할을 한다. 초기화식은 생략가능
for(int i=0, j=100; i<=50 && j>=50; i++,j--){}
//-----초기화식-----/-----조건식------/--증감식--/
//초기화식에 사용된 변수는 for문에서만 사용할 수 있는 로컬 변수
//주의점 :
//초기화식에서 루프 카운터 변수를 선언할 때 float 타입을 사용하면 안된다.
int i=0; -> 루프 카운터변수
// float i=0.1f; -> 실수인 float타입을 쓰면 정확하게 표현할 수 없다.
// ex) 10번 반복되어야 하는 루프가 9번 실행됨
for 안에 다른 for문이 내포되어있다.
breakpoint 설정 => F11 => Debug 모드로 변환 =>F6 눌러 프로그램의 흐름 파악 => Debug 모드 프로그램의 흐름 종료 => Java 개발모드 변환 => breakpoint 제거
run -step over : F6
반복의 횟수가 정해져 있지 않은 경우 사용한다.
while문은 조건식이 true인 경우 계속 반복하고, 조건식이 false가 되면 반복행위를 멈추고 while문을 종료한다.
while(조건식) {
...;
}
//while을 사용하여 1부터 10까지 출력하기
public class whileExample{
public static void main(String[] args) {
int i=1;
while(i<=10) {
System.out.println(i);
i++;
}
}
}
//출력값 :
1
2
3
4
5
6
7
8
9
10
//while문은 한 번 실행할 때 변수 i값을 출력하고 i를 1씩 증가시킨다.
//조건문은 i가 10 이하일때까지 true가 되므로 while문은 총 10번을 반복 실행한다.
앞에 for문을 사용해 1~100 합을 구해보았다. 이번에는 같은 문제를 while을 사용해보겠다.
//1~100까지의 합을 while문을 사용해서 구하기
public class whileSumExample {
public static void main(String[] args) {
int sum=0; //합계를 저장할 변수
int i =1; //루프 카운터 변수
while(i<=100) {
sum+=i;
i++;
}
System.out.println("1~"+(i-1)+" 합 : "+sum);
}
}
//출력값 :
1~100 합 : 5050
do-while은 while과 달리 블록 내부의 실행문을 우선 실행하고 실행 결과에 따라 반복 실행을 계속할지 결정한다.
do {
실행문;
} while(조건식);
실행 순서 : 1 실행문을 우선 실행
2 실행문 모두 실행되면 조건식 평가
3 조건식의 결과가 true면 '실행문 -> 조건식' 순서로 반복실행
4 조건식의 결과가 false면 do-while문을 종료함
//주사위 숫자 중 하나를 반복적으로 무작위로 뽑고, 숫자 6이 나오면 종료
//break 사용해서 while문 종료하기
public class BreakExample {
public static void main(String[] args) {
while(true) {
int num=(int)(Math.random()*6)+1;
System.out.println(num);
if(num==6) {
break;
}
}
System.out.println("프로그램 종료");
}
}
//반복문이 중첩되어 있을 경우 break문은 가장 가까운 반복문만 종료한다.
//중첩된 반복문까지 모두 종료시키려면 바깥쪽 반복문 앞에 이름(라벨)을 붙이고 break 이름;을 사용하면 된다.
//1~10 사이 숫자 중 짝수만 출력해보자
public class ContinueExample {
public static void main(String[] args) {
for(int i=1; i<=10; i++) {
if(i%2!=0) { //2로 나눈 나머지가 0이 아닐 경우 = 홀수일 경우
continue;
}
System.out.printlne(i); //홀수는 실행되지 않음
}
}
}
//출력값 :
2
4
6
8
10