while문
- 조건문이 참인 동안 수행할 문장들을 반복하여 수행한다
- 구조 :
while (조건문) {
<수행할 문장 1>;
<수행할 문장 2>;
....
}
- break; : 반복문을 빠져나감
- continue; : 반복문의 맨 처음(조건문)으로 돌아감
/* 4-3 while 문 : 조건문이 참인 동안 수행할 문장을 반복 수행
while (조건문) {
<수행할 문장 1>;
<수행할 문장2>;
.....
}
*/
// 예제1
int treeHit = 0;
while (treeHit < 10) {
treeHit += 1; // treeHit++ 로도 표현 가능
System.out.println(String.format("나무를 %d번 찍었습니다.", treeHit));
}
System.out.println("나무 넘어갑니다.");
System.out.println();
// 무한루프
while (true) {
System.out.println("Ctrl-C를 눌러야 빠져나갈 수 있습니다");
}
// break; : while문 강제로 멈춤
int coffee = 10;
int money = 300;
while (money > 0) {
System.out.println("돈을 받았으니 커피를 줍니다.");
coffee--;
System.out.println("남은 커피의 양은" + coffee + "입니다.");
if (coffee == 0) {
System.out.println("커피가 다 떨어졌습니다. 판매를 중지합니다.");
break;
}
}
System.out.println();
// continue; : 어떤 조건을 검사해서 참이 아닌 경우 while문의 처음(조건문)으로 돌아감
int a = 0;
while (a < 10) {
a++;
if (a % 2 == 0) {
continue; // 짝수인 경우 조건문으로 돌아간다
}
System.out.println(a); // 홀수만 출력된다
}
for문
- 초깃값을 넣고, 조건문이 참일 때까지 값을 증가시키며 문장 반복
- 구조 :
for (초깃값; 조건문; 증갓값;) {
<수행할 문장 1>;
<수행할 문장 2>;
....
}
※ print와 println 차이 :
print는 줄바꿈문자(\n) 사용 X >> 줄 바꿈 없이 한 줄에 출력
println은 줄바꿈문자(\n) 사용 O >> 다음 줄로 넘어감
/* 4-4 for문 : while처럼 반복문에 사용
for (초깃값; 조건문; 중간값) {
...
}
*/
// 예제 1
String[] numbers = {"one", "two", "three"};
for(int i=0; i<numbers.length; i++) {
System.out.println(numbers[i]);
}
System.out.println();
// 예제 2
int[] marks1 = {90, 25, 67, 45, 80};
for (int i=0; i<marks1.length; i++) {
if (marks1[i] > 60) {
System.out.println((i+1)+"번 학생은 합격입니다.");
} else {
System.out.println((i+1)+"번 학생은 불합격입니다.");
}
}
System.out.println();
// continue 활용
int[] marks2 = {90, 25, 67, 45, 80};
for (int i=0; i<marks2.length; i++) {
if (marks2[i] < 60) {
continue;
}
System.out.println((i+1)+"번 학생 축하합니다. 합격입니다.");
}
System.out.println();
// 이중 for문
for (int i=2; i<10; i++) {
for (int j=1; j<10; j++) {
System.out.print(i*j + " "); // print는 줄 바꿈(\n) 포함하지 않고 출력
}
System.out.println(); // 줄 바꿔주는 역할
}
for each문
- 구조 :
for (type 변수명: iterate) {
body-of-loop
}
※ type에는 자료형 입력,
변수명에는 변수로사용할 변수의이름
iterate에는 루프를 돌릴 객체 입력
※ 콜론(:)을 기준으로 좌우의 자료형은 일치해야 한다!
/* 4-5 for each문
for (type 변수명: iterate) {
body-of-loop
}
type : 자료형 / iterate : 루프를 돌릴 객체
변수명에 루프를 돌릴 객체에서 1개씩 순차적으로 대입됨
** type 자료형과 iterate 자료형은 일치해야함!
*** 따로 반복 횟수를 명시적으로 주는 것이 불가능하고, 한 단계씩 순차적으로 반복할 때만 사용 가능
*/
// 예제 1
String[] numbers2 = {"one", "two", "three"};
for(String number: numbers2) {
System.out.println(number);
}
System.out.println();
// 예제 2
ArrayList<String> numbers3 = new ArrayList<>(Arrays.asList("one", "two", "three"));
for (String number: numbers3) {
System.out.println(number);
}