프로그램 수행 흐름을 바꾸는 역할을 하는 제어문 중 하나로 특정 문장들을 반복해서 수행하도록 함
끝이 정해져 있는(횟수가 지정되어 있는) 반복문
for(초기식 ; 조건식 ; 증감식){ 반복 수행할 코드 }
- 초기식 : for문을 제어하는 용도의 변수 선언
- 조건식 : for문의 반복 여부를 지정하는 식 (다음 반복 진행해?)
보통 초기식에 사용된 변수를 이용하여 조건식을 작성함- 증감식 : 초기식에 사용된 변수를 for문이 끝날 때마다 증가 또는 감소시켜
조건식의 결과를 변하게 하는 식
[예시 1] for문 기초 사용법1
- 1~10 출력하기
--> 1부터 10까지 1씩 증가하며 출력
for(int i = 1 ; i <= 10 ; i++) {
// 초기식 ; 조건식 ; 증감식
// 진행 순서
// ① 초기식 ② 조건식 ③ 반복 수행할 코드
// ④ 증감식 ⑤ 조건식 ⑥ 반복 수행할 코드 ... (조건식이 false가 될 때까지 이 과정을 반복)
System.out.println(i + "출력");
[예시 2] for문 기초 사용법2
- 3에서 7까지 1씩 증가하며 출력
--> i의 값이 7 이하일 때 true가 되는 조건식
for(int i = 3 ; i <= 7 ; i++) {
System.out.print(i + " ");
}
[예시 3]
- 2 부터 15 까지 1씩 증가하며 출력
for(int i = 2 ; i <= 15 ; i++) {
System.out.print(i + " ");
}
[예시 4]
- 1부터 입력받은 수까지 1씩 증가하여 출력
Scanner sc = new Scanner(System.in);
System.out.print("끝 번호 : ");
int input = sc.nextInt();
for(int i = 1 ; i <= input ; i++) {
System.out.println(i);
}
[예시 5]
- 1부터 입력받은 수까지 2씩 증가하며 출력
Scanner sc = new Scanner(System.in);
System.out.print("끝 번호 : ");
int input = sc.nextInt();
for(int i = 1 ; i <= input ; i += 2) {
// i = i + 2 -> i에 기존 i값 + 2 대입
System.out.println(i + "출력");
}
[예시 6]
- 1.0부터 입력받은 실수까지 0.5씩 증가하며 출력
Scanner sc = new Scanner(System.in);
System.out.print("끝나는 실수 : ");
double input = sc.nextDouble();
for(double d = 1.0 ; d <= input ; d += 0.5) {
System.out.println(d + "출력");
}
[예시 7]
- 영어 알파벳 A 부터 Z 까지 한 줄로 출력
// * char 자료형은 문자형이지만 실제로는 정수(문자표 번호)를 저장한다.
for(int i = 'A' ; i <= 'Z' ; i++ ) {
System.out.print((char)i);
}
System.out.println("\n------------------------------------------");
for(char i = 'A' ; i <= 'Z' ; i++) {
System.out.print(i);
}
[예시 8]
- 10에서 1까지 1씩 감소하며 출력
for(int i = 10 ; i >= 1 ; i--) {
System.out.println(i);
[예시 9] for문 응용 1 : 반복문을 이용한 값의 누적
- 1부터 10까지 모든 정수의 합 구하기
int sum = 0; // 반복되어 증가하는 i 값의 합계를 저장할 변수
// 0으로 시작하는 이유 : 아무것도 더하지 않음으로
// 정확히 결과를 도출할 수 있기 때문에
for(int i = 1 ; i <= 10 ; i++) {
// sum = sum + i;
sum += i;
}
System.out.println("합계 : " + sum);
[예시 10] for문 응용 2
- 정수 5개를 입력받아서 합계 구하기
Scanner sc = new Scanner(System.in);
int sum = 0; // for문 밖에 존재하는 변수로
// 아래 for문이 끝나도 사용 가능
for(int i = 1 ; i <= 5 ; i++) {
System.out.print("입력 " + i + " : ");
int input = sc.nextInt();
sum += input; // sum에 입력받은 input 값을 누적
}
System.out.println("합계 : " + sum);
[예시 11]
- 정수를 몇 번 입력 받을지 먼저 입력 받고 입력된 정수의 합계를 출력
- ex) 입력 받을 정수의 개수 : 3
입력 1 : 10
입력 2 : 20
입력 3 : 30
합계 : 60
Scanner sc = new Scanner(System.in);
System.out.print("입력 받을 정수의 개수 :");
int num = sc.nextInt();
int sum = 0;
for(int i = 1 ; i <= num ; i++) {
System.out.print("입력 " + i + " : ");
int input = sc.nextInt();
sum += input;
}
System.out.println("합계 : " + sum);
[예시 12]
- 1 부터 20 까지 1씩 증가하면서 출력
- 단, 5의 배수에 () 를 붙여서 출력
ex) 1 2 3 4 (5) 6 7 8 9 (10) 11 ...
for(int i = 1 ; i <= 20 ; i++) {
if( i % 5 == 0 ) { // i가 5의 배수인 경우
System.out.print( "(" + i + ") " );
} else { // i가 5의 배수가 아닌 경우
System.out.print(i + " ");
}
}
[예시 13]
- 1 부터 20까지 1씩 증가하면서 출력
- 단, 입력 받은 수의 배수는 () 표시
ex) 괄호를 표시할 배수 : 3
1 2 (3) 4 5 (6) ...
Scanner sc = new Scanner(System.in);
System.out.print("괄호를 표시할 배수 : ");
int num = sc.nextInt();
for(int i = 1 ; i <= 20 ; i++ ) {
if( i % num == 0) {
System.out.print( "(" + i + ") ");
} else {
System.out.print( i + " ");
}
}
[예시 14] 구구단 출력
2 ~ 9 사이 수를 하나 입력 받아 해당 단을 출력
단, 입력 받은 수가 2 ~ 9 사이 숫자가 아니면 "잘못 입력 하셨습니다" 출력
Scanner sc = new Scanner(System.in);
System.out.print("단 입력 : ");
int dan = sc.nextInt();
if(dan >= 2 && dan <= 9){ // dan 2~9 사이일 경우
for(int i = 1 ; i <= 9 ; i++) {
System.out.printf("%d X %d = %d\n", dan, i, dan * i);
}
} else { // dan 2~9 사이가 아닌 경우
System.out.println("잘못 입력 하셨습니다.");
}
[예시 15] 19단 출력기
2 ~ 19단 사이 단을 입력 받아서 X 1 ~ X 19 까지 출력
단, 2 ~ 19 사이 단이 입력되지 않으면 "잘못 입력 하셨습니다." 출력
Scanner sc = new Scanner(System.in);
System.out.print("단 입력 : ");
int dan = sc.nextInt();
if(dan >= 2 && dan <= 19) {
for(int i = 1 ; i <= 19 ; i++) {
System.out.printf("%d X %d = %d\n", dan, i, dan * i);
}
} else {
System.out.println("잘못 입력 하셨습니다.");
}
컬렉션, 배열의 모든 요소를 순차적으로 반복 접근할 수 있는 for문
(순차적 : 0번 인덱스부터 마지막 요소까지 인덱스를 1씩 증가)
- 작성법
for(컬렉션 또는 배열에서 꺼낸 한 개의 요소를 저장할 변수 : 컬렉션명 또는 배열명){ }
/*
for(int i=0; i<studentList.size(); i++) {
System.out.println( studentList.get(i) );
// StudentList에서 i번째 인덱스 요소를 얻어와 출력
}
*/
int index = 0;
for( Student std : studentList ) {
// std에는 for문 반복 시마다 0, 1, 2, ... 인덱스 요소들 한 번씩 저장됨
System.out.print( (index++) + "번 : ");
System.out.println( std );
}