while문 vs do-while문
정수 값을 입력 받아 더하고 '0'이 입력되면 합을 출력하는 프로그램
1) while문
- 값을 입력 받는 부분이 main 함수와 while문 내에서 필요하다.
package ch18;
import java.util.*;
public class SumInput {
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
int input = scanner.nextInt(); // 값 입력 받는 부분
int sum = 0; // 지역 변수 초기화 필요
while (input != 0) {
sum += input;
input = scanner.nextInt(); // 값 입력 받는 부분
}
System.out.println(sum);
}
}
2) do-while문
- while문과 다르게 수행을 한번 한 뒤, 다음 수행부터 조건을 확인한다.
- do-while문 내에서만 값을 입력받는다 -> 코드 깔끔!
- 자주 쓰이진 않지만 간혹 while문보다 유용함.
package ch18;
import java.util.*;
public class SumInput {
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
int input;
int sum = 0;
do {
input = scanner.nextInt(); // 입력받는 부분
sum += input;
} while (input != 0);
System.out.println(sum);
}
}
for문
- 횟수를 세는 변수인 i는 0으로 초기화하는 것이 좋다.
- for문의 statement들은 생략되거나 여러개 들어갈 수 있다.
- 생략될 경우 각 statement는 for문 내에서 정의할 수 있다.
- 모든 statement가 생략되는 경우
for( ; ; )
: 무한반복
package ch19;
public class ForTest {
public static void main(String[] args) {
int cnt = 1;
int sum = 0;
for(int i=0; i<10; i++, cnt++) {
sum += cnt;
}
System.out.println(sum);
}
}
중첩 반복문 (Nested-loop)
- 중첩 되는 횟수만큼 시간은 많이 소요된다.
- 두번 반복 시 O(n^2)
중첩 while문 사용한 구구단 프로그램
내부 while문에서 반복을 수행하고 j == 9 에서 j++가 실행되면 값은 10으로 저장된다. 그래서 다음 외부 반복문이 실행되도 j값이 내부 while문의 조건을 만족하지 못하기 때문에 값이 출력되지 못한다. 따라서 첫번째 내부 while문이 실행되고 나면 j값을 초기화 해주어야 한다.
package ch20;
public class MultiplicationTest {
public static void main(String[] args) {
int i,j;
i = 2;
j = 1;
while (i <= 9) {
while (j <= 9) {
System.out.printf("%d * %d= %d\n",i,j,i*j);
j++;
}
i++;
j = 1; // j 값 초기화
}
}
}
'Java & Kotlin' 카테고리의 다른 글
[Java 기초] break문, continue문 (0) | 2022.01.21 |
---|---|
[Java 기초] switch-case 문 (0) | 2022.01.19 |
[Java 기초] 조건 연산자, 비트 연산자 (0) | 2022.01.19 |