: 어떤 작업이 반복적으로 수행되도록 할 때
: 조건을 만족하는 동안 블럭{}을 반복
for (초기화; 조건식; 증감식) { (조건식이 참(true)인 동안 수행될 문장들)}
for (int i=1; i<=3; i++) {
System.out.println("Hello");
} // Hello 3번 출력
1) 초기화
: 반복문에 사용될 변수를 초기화. 둘 이상의 변수가 필요할 때는 콤마로 구분 (단, 두 변수의 타입은 같아야함) (ex. for(int i=1, j=0; i<=10; i++))
2) 조건식
: 조건식의 값이 참이면 반복을 계속하고, 거짓이면 반복을 중단. 조건식이 생략되면 참으로 간주되어 무한 반복문이 됨.
3) 증감식
: 반복문을 제어하는 변수의 값을 증가 또는 감소시키는 식.
ex. i++ (1씩 증가), i+=2(2씩 증가), i*=3 (3배씩 증가)
> 세가지 요소는 필요하지 않을 경우 생략 가능
*scope(범위) - 선언위치부터 선언된 블럭의 끝까지.
: for문 내에 또 다른 for문을 포함시킴. 중첩횟수는 거의 제한이 없음.
ex. 5행 10열의 별찍기
for (int i=1; i<=5; i++) {
for (int j=1; j<=i; j++) {
System.out.print("*");
}
System.out.println();
}
/* 출력 결과
*
**
***
****
*****
*/
: 조건식이 '참'인 동안 블럭 내의 문장 반복
while (조건식) { (조건식의 연산결과가 참인동안, 반복될 문장들) }
거짓이면 while문을 벗어난다.
ex. 각 자리수의 합 구하기.
int num =0, sum =0;
System.out.print("숫자를 입력하세요.(예. 12345)>");
Scanner scanner = new Scanner(System.in);
String tmp = scanner.nextLine();
num = Integer.parseInt(tmp); //입력받은 문자열(tmp)을 숫자로 변환
while (num!=0) {
// num을 10으로 나눈 나머지를 sum에 더함
sum += num%10;
System.out.printf("sum=%3d num=%d%n", sum, num);
// num을 10으로 나눈 값을 다시 num에 저장
num/=10;
}
Sytem.out.println("각 자리수의 합:"+sum);
}
: 블럭{}을 최소한 한 번 이상 반복 - 사용자 입력받을 때 유용
do { (조건식의 연산결과가 참일 때 수행될 문장들)(처음 한 번은 무조건 실행)
} while (조건식);
int input = 0, answer = 0;
answer = (int)(Math.random()*100) +1; //1~100사이의 임의의 수 저장
Scanner scanner = new Scanner(System.in);
do {
System.out.print("1과 100사이의 정수를 입력하세요>");
input = scanner.nextInt();
if (input>answer) {
System.out.println("더 작은 수로 시도해보세요.");
} else if (input <answer) {
System.out.println("더 큰 수로 시도해보세요.");
}
} while (input != answer);
System.out.println("정답입니다.");
: 자신이 포함된 가장 가까운 반복문을 벗어난다.
: 자신이 포함된 반복문의 끝으로 이동 - 다음 반복으로 넘어감. 전체반복 중에서 특정 조건을 만족하는 경우 건너뛸 때 유용
: 반복문에 이름을 붙여서 하나 이상의 반복문을 벗어날 수 있다.
Loop1 : for (int i=2; i<=9; i++) {
for (int j=1; j<=9; j++) {
if (j==5)
break Loop1;
System.out.println(i+"*"+j+"="+i*j);
}
System.out.println();
}