0. 반복문
문장 또는 문장들을 반복해서 수행할 때 사용한다. 종류로는 for문, while문, do-while문이 있다.
조건식과 수행할 블럭{} 또는 문장으로 구성
반복회수가 중요한 경우에 for문을 그 외에는 while문을 사용한다.
for문과 while문은 서로 변경가능하다.
for문이나 while문에 속한 문장은 조건에 따라 한번도 수행되지 않을 수도 있다.
그러나 do-while문은 while문의 변형으로 블럭{}이 최소한 한번은 수행될 것을 보장한다.
1. for문
for문은 반복횟수를 알고 있을 때 사용한다.
변수 i에 1을 저장한 다음, 매 반복마다 i의 값을 1씩 증가시킨다. 그러다 i 의 값이 5를 넘으면 조건식이 거짓이 되어 반복을 마친다.
for문의 구조와 수행순서
'초기화', '조건식', '증감식', '블럭{}' 모두 4부분으로 이루어져 있다.
초기화
반복문에 사용될 변수를 초기화하는 부분. 한 번만 수행된다. 보통 변수 하나로 for 문을 제어하지만, 둘 이상의 변수를 사용할 때는 , 로 구분해서 사용하면 된다.
for(int i=1, j=0; i<=10; i++){...}
조건식
조건식이 true면 반복 계속, false면 반복을 중단하고 for문을 빠져나간다.
증감식
반복문을 제어하는 변수의 값을 증가 또는 감소시키는 식이다. 증감식에 의해 변수 값이 변하다가 조건식이 거짓이 되면 for문을 빠져나간다.
for(int i=1; i<=10; i++){...} //1부터 10까지 1씩 증가
for(int i=1; i<=10; i--){...} //1부터 10까지 1씩 감소
for(int i=1; i<=10; i+=2){...} //1부터 10까지 2씩 증가
for(int i=1; i<=10; i*=3){...} //1부터 10까지 3배씩 증가
증감식도 쉼표를 이용해서 두 문장 이상을 하나로 연결해서 쓸 수 있다.
public class FlowExTest {
public static void main(String[] args) {
for (int i = 1, j = 10; i <= 10; i++, j--) {
System.out.println("i="+i+"j="+j);
}
}
}
또한 초기화, 조건식, 증감식 모두 생략도 가능하다. 조건식은 참이 된다.
for(; ;){...}
예12)
public class FlowEx12 {
public static void main(String[] args) {
for(int i=1; i<=5; i++)
System.out.println(i); //i의 값을 출력한다.
for(int i=1; i<=5; i++)
System.out.print(i); //print를 쓰면 가로로 출력
}
}
{}가 없는 데도 사용이 가능한 것인가?? 궁금하다 .
예13)
public class FlowEx13 {
public static void main(String[] args) {
int sum=0; //합계를 저장하기 위한 변수
for(int i=1; i<=10; i++) {
sum+=i; //sum=sum+i;
System.out.printf("1부터 %2d까지의 합:%2d%n",i,sum);
}
}
}
%2d : 정수의 최대 2 자리를 인쇄한다.
i | sum=sum+i |
1 | 1=0+1 |
2 | 3=1+2 |
3 | 3+3 |
4 | 6+4 |
5 | 10+5 |
6 | 21=15+6 |
7 | 28=21+7 |
8 | 36=28+8 |
9 | 45=36+9 |
10 | 55=45+10 |
예14)
public class FlowEx14 {
public static void main(String[] args) {
for(int i=1, j=10; i<=10; i++, j--) {
System.out.printf("%d \t %d%n", i, j);
}
}
}
j 를 쓰지 않고 i하나만 써서 똑같이 출력하기
i와 j의 값을 더한 것이 11이므로 j대신 11-i로 쓸 수 있다.
public class FlowEx14 {
public static void main(String[] args) {
for(int i=1; i<=10; i++) {
System.out.printf("%d \t %d%n", i, 11-i);
}
}
}
예15)
public class FlowEx15 {
public static void main(String[] args) {
System.out.println("i \t 2*i \t 2*i-1 \t i*i \t 11-i \t i%3 \t i/3");
System.out.println("-----------------------------------------------------");
for(int i=1; i<=10; i++) {
System.out.printf("%d \t %d \t %d \t %d \t %d \t %d \t %d%n", i, 2*i, 2*i-1, i*i, 11-i, i%3, i/3);
}
}
}
'JAVA > 조건문(if, switch)과 반복문(for, while)' 카테고리의 다른 글
[JAVA] 향상된 for 문 (0) | 2021.06.12 |
---|---|
[JAVA] 중첩 for문 예제(구구단/별찍기) (0) | 2021.06.10 |
[JAVA]Math.random() (0) | 2021.06.09 |
[JAVA] switch문 예제(계절 /가위바위보(난수)/주민등록번호/점수에 따른 학점 출력) (0) | 2021.06.09 |
[JAVA] switch문 (0) | 2021.06.09 |