반복문 (for문 while문 do-while문)
- 어떤 작업(코드들)이 반복적으로 실행되도록 할 때 사용
- for문은 반복 횟수를 알고 있을 때 주로 사용
while문은 조건에 따라 반복할 때 주로 사용
while문과 do-while문의 차이점은 조건을 먼저 검사한으냐 나중에 검사하느냐일 뿐 동작 방식은 동일 - 반복문은 한 번 작성된 실행문을 여러 번 반복 실행해주기 때문에 코드를 절감하고 간결하게 만들어줌
- 코드가 간결하면 개발 시간을 줄일 수 있고, 오류가 날 확률도 줄어든다
for문
- 주어진 횟수만큼 실행문을 반복 실행할 때 적합한 반복 제어문
for(초기화식; 조건식; 증감식) {
실행문
}
package thisisjava.chap04.num03;
public class ForPrintFrom1To10Example {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
System.out.println(i);
}
}
}
- 초기화식이 필요 없을 경우에는 초기화식 생략할 수 있다.
int i = 1;
for (; i<=100; i++ { ... }
- 초기화식이 둘 이상이 있을 수도 있고, 증감식도 둘 이상이 있을 수 있다
쉼료(,)로 구분해서 작성하면 됨
for (int i=0, j=100; i<=50 && j>=50; i++, j--) {...}
- 초기화식에 선언된 변수는 for문 블록 내부에서 사용되는 로컬 변수임
- for문을 벗어나서는 사용할 수 없음
//1부터 100까지 합을 출력
package thisisjava.chap04.num03;
public class ForSumFrom1To100Example {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println("1~100 합: " + sum);
}
}
//1부터 100까지 합을 출력
package thisisjava.chap04.num03;
public class ForSumFrom1To100Example1 {
public static void main(String[] args) {
int sum = 0;
int i = 0;
for (i = 1; i <= 100; i++) {
sum += i;
}
System.out.println("1~" + (i - 1) + " 합 : " + sum);
}
}
> i가 for문의 초기화식에서 선언되지 않고, for문 전에 선언되었다면 for문 내부뿐만 아니라 for문을 벗어나서도 사용할 수 있음
// float 타입 카운터 변수
package thisisjava.chap04.num03;
public class ForFloatCounterExample {
public static void main(String[] args) {
for (float x = 0.1f; x <= 1.0f; x += 0.1f) {
System.out.println(x);
}
}
}
> for문 초기화식에서 루프 카운트 변수를 선언할 때 부동소수점 타입을 사용하지 말아야 함
> float 타입으로 정확하게 표현할 수 없음
- for문은 또 다른 for문을 내포할 수 있음. 중첩 for문
- 바깥쪽 for문이 한 번 실행할 때마다 중첩된 for문은 지정된 횟수만큼 반복해서 돌다가
다시 바깥쪽 for문으로 돌아감 -
// 구구단 package thisisjava.chap04.num03; public class ForMultiplicationTableExample { public static void main(String[] args) { for (int m = 2; m <= 9; m++) { System.out.println("*** " + m + "단 ***"); for (int n = 1; n <= 9; n++) { System.out.println(m + " x " + n + " = " + (m * n)); } } } }
> 2단부터 9단까지 출력
while문
- 조건식이 true일 경우에 계속해서 반복함
while (조건식) {
실행문
}
//1부터 10까지 출력
package thisisjava.chap04.num03;
public class WhilePrintFrom1To10Example {
public static void main(String[] args) {
int i = 1;
while (i <= 10) {
System.out.println(i);
i++;
}
}
}
// 1부터 100까지 합을 출력
package thisisjava.chap04.num03;
public class WhileSumFrom1To100Example {
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);
}
}
// 키보드로 while문 제어
package thisisjava.chap04.num03;
public class WhileKeyControlExample {
public static void main(String[] args) throws Exception {
boolean run = true;
int speed = 0;
int keyCode = 0;
while (run) {
if (keyCode != 13 && keyCode != 10) {
System.out.println("-----------");
System.out.println("1.증속 | 2.감속 | 3.중지");
System.out.println("----------");
System.out.print("선택: ");
}
keyCode = System.in.read();
if (keyCode == 49) { //1을 읽었을 경우
speed++;
System.out.println("현재 속도=" + speed);
} else if (keyCode == 50) { //2를 읽었을 경우
speed--;
System.out.println("현재 속도=" + speed);
} else if (keyCode == 51) { //3을 읽었을 경우
run = false;
}
}
System.out.println("프로그램 종료");
}
}
> p.127
do-while문
- 블록 내부의 실행문을 우선 실행시키고 실행 결과에 따라서 반복 실행을 계속할지 결정하는 경우도 발생
do {
실행문;
} while { 조건식 }
// do-while문
package thisisjava.chap04.num03;
import java.util.Scanner;
public class DoWhileExample {
public static void main(String[] args) {
System.out.println("메시지를 입력하세요");
System.out.println("프로그램을 종료하려면 q를 입력하세요");
Scanner scanner = new Scanner(System.in);
String inputString;
do {
System.out.print(">");
inputString = scanner.nextLine();
System.out.println(inputString);
} while (!inputString.equals("q"));
System.out.println();
System.out.println("프로그램 종료");
}
}
break문
- 반복문인 for문, while문, do-while문을 실행 중지할 때 사용됨. switch문에서도 break문 사용하여 종료
// break로 while문 종료
package thisisjava.chap04.num03;
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("프로그램 종료");
}
}
> 6이 나오면 while문 종료
> 반복문이 중첩되어 있을 경우 break문은 가장 가까운 반복문만 종료
> 바깥쪽 반복문은 종료시키지 않음
//바깥쪽 반복문 종료
package thisisjava.chap04.num03;
public class BreakOutterExample {
public static void main(String[] args) {
Outter:
// 이름(라벨)
for (char upper = 'A'; upper <= 'Z'; upper++) {
for (char lower = 'a'; lower <= 'z'; lower++) {
System.out.println(upper + "-" + lower);
if (lower == 'g') {
break Outter; //break 이름;
}
}
}
System.out.println("프로그램 실행 종료");
}
}
> 중첩된 for문에서 lower 변수가 'g'를 갖게 되면 바깥쪽 for문까지 빠져나오도록 함
continue문
- 반복문인 for문, while문, do-while문에서만 사용됨
- 블록 내부에서 continue문이 실행되면 for문의 증감식 또는 while, do-while문의 조건식으로 이동함
//continue를 사용한 for문
package thisisjava.chap04.num03;
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.println(i); //홀수는 실행되지 않음
}
}
}
'이것이 자바다' 공부 기록
300x250
'Language > JAVA' 카테고리의 다른 글
[JAVA] 클래스 // 필드 생성자 메소드 (0) | 2021.09.17 |
---|---|
[JAVA] 참조 타입 // String 배열 열거 (0) | 2021.09.16 |
[JAVA] 조건문 // if문 switch문 (0) | 2021.09.14 |
[JAVA] 연산자와 연산식 2 // 이항연산자 삼항연산자 (0) | 2021.09.13 |
[JAVA] 연산자와 연산식 1 // 단항연산자 이항연산자 (0) | 2021.09.12 |