1.1 for문
for문은 반복 횟수를 알고 있을 때 적합하다. 또한 구조가 직관적이라 이해하기가 쉬운 특징을 가지고 있다.
1) 구조
for(초기화; 조건식; 증감식){
//③ 조건식이 참일 때 수행될 문장들을 적는다.
}
2) for문의 수행 순서
① 조건문의 '초기화'
-반복문에 사용될 변수를 초기화 하는 부분이며 처음 한번만 수행된다.
② 조건문의 '조건식'
-이때 조건식의 값이 참이면 반복을 계속 진행 → 조건문의 조건식이 참인 동안에는 반복을 계속한다
-조건식의 값이 거짓이면 for문을 빠져 나간다.
③ 수행될 문장
④ 조건문의 '증감식'
-반복문을 제어하는 변수의 값을 증가 또는 감소시키는 식으로 매 반복마다 변수의 값이 증감식에 의해 변하고 결국 조건식이 거짓이 되어 for문을 벗어나게 된다. 변수의 값을 1씩 증가시키는 연산자 '++'이 증감식에 주로 사용되지만 다양한 연산자들로 증감식을 작성할 수도 있다.
for문의 사용 예제1) 별(*)찍기
import java.util.Scanner;
//for문을 이용한 예제
//1. 별(*)찍기: 사용자가 입력하는 개수에 따라 별을 점진적으로 찍는 프로그램
public class forEx1 {
public static void main(String[] args) {
int num = 0;
System.out.println("*을 출력할 라인의 수를 입력하세요 >> ");
Scanner scanner = new Scanner(System.in);
String tmp = scanner.nextLine(); //화면을 통해 입력받은 내용을 tmp에 저장
num = Integer.parseInt(tmp); //입력받은 문자열(tmp)을 숫자로 변환
for(int i = 0; i <num; i++) {
for(int j = 0; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
for문의 사용 예제2) 구구단
//중첩 for문을 이용해서 구구단 만들기
public class forGugudan {
public static void main(String[] args) {
for(int i = 2; i <= 9; i++) { //외부 for문이 1번 반복될 때,
for(int j = 1; j <=9; j++) { //내부 for문은 1~9까지 반복된다
System.out.printf("%d X %d = %d%n", i, j, i*j);
}
}
}
}
1.2 향상된 for문
JDK1.5부터 배열과 컬렉션에 저장된 요소에 접근할 때 기존보다 편리한 방법으로 처리할 수 있도록 for문의 새로운 문법이 추가되었다. 다만 이 for문은 일반적인 for문과 달리 배열(Array)이나 컬렉션에 저장된 요소들을 읽어 오는 용도로만 사용할 수 있다는 제약이 있다.
기존 for문과 향상된 for문을 간단 비교해보자.
public class forEx2 {
public static void main(String[] args) {
int [] arr = {10, 20, 30, 40};
//1. 일반 for문
for(int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
//2. 향상된 for문
for(int tmp : arr) {
System.out.println(tmp);
}
}
}
2.1 while문
① while문은 for문에 비해 구조가 간단하다.
② if문처럼 조건식과 블럭{}만으로 이루어져 있다.
③ while문은 조건식이 참(true)인 동안 조건식이 거짓이 될 때까지 블럭{} 내의 문장을 반복한다.
④ for문과 달리 반복 횟수가 정해져 있지 않을 때 사용하기 적합하다.
1) while문의 기본 구조
①
while(조건식){
//② 조건식의 연산 결과가 참(true)인 동안 반복될 문장들을 적는다.
}
2) while문의 수행 순서
① 조건식을 평가한다(참인지, 거짓인지)
② 조건식이 참이면 ②의 수행문을 수행하고, 거짓일 경우에는 블럭{} 밖으로 나간다.
//while문 예제-1)
public class wileEx1 {
public static void main(String[] args) {
int i = 5; //0~4까지의 값을 가지고 있으므로 5번 반복된다.
while(i-- !=0) {
System.out.println(i+ "조건식의 참 여부에 따라 주어진 횟수를 반복");
}
}
}
2.2 do-while문
do-while문은 while문의 변형으로 기본 구조는 while문과 동일하지만 수행될 문장이 먼저 오고 그 다음 참, 거짓 여부를 판단하는 블럭{}이 온다. 그래서 while문과 반대로 블럭을 먼저 수행한 후에 조건식을 평가한다. 즉, do-while문은 조건식이 참이 아니라도 최소 한번은 수행될 것을 보장한다.
1) 구조
do{
// 조건식의 연산결과가 참일 때 수행될 문장들을 적는다.
} while(조건식);
do-while문의 사용 예제
import java.util.Scanner;
//do-while문 예제
//=> 임의의 값을 받아 입력한 값이 맞을 때까지 반복하는 예제
public class doWhileEx {
public static void main(String[] args) {
int input = 0; // 값을 입력 하여 저장하는 변수
int answer = 0; // 랜덤 값을 저장하는 변수
answer = (int) (Math.random() * 100) + 1; // 1~100사이의 임의의 수를 저장
Scanner scanner = new Scanner(System.in);
do {
System.out.println("1과 100사이의 정수를 입력하세요 >> ");
String tmp = scanner.nextLine();
input = Integer.parseInt(tmp);
if (input > answer) {
System.out.print("더 작은 수로 다시 입력주세요.");
} else if (input < answer) {
System.out.print("더 큰 수로 다시 입력해주세요.");
}
} while (input != answer);
System.out.println("정답입니다.");
}
}
2.3 continue문
1) continue문의 특징
① continue문은 반복문 내에서만 사용할 수 있다.
② 반복이 진행되는 동안 continue문을 만나면 반복문의 끝으로 이동해 다음 반복문으로 넘어간다.
③ for문의 경우 증감식을 통해서, while, do-while문의 경우 조건식으로 이동한다.
④continue문은 반복문 전체를 벗어나지 않고 다음 반복을 계속 수행한다는 점이 break과 다르다.
⑤ if문과 함께 주로 사용되며 특정 조건을 만족하는 경우 continue문 이후의 문장들을 수행하지 않고 다음 반복으로 넘어가 계속 진행한다.
⑥ 전체 반복 중에 특정 조건을 만족하는 경우를 제외하고자 할 때 유용하다.
continue를 사용한 예제)
-1~10 사이의 숫자들 중 3의 배수인 것은 제외하는 예제
public class continueEx {
public static void main(String[] args) {
for (int i = 0; i <= 10; i++) {
if (i % 3 == 0)
continue;
System.out.println("3으로 나눈 나머지가 0일 때의 몫은 "+ i +" 입니다.");
}
}
}
'Java > Basic' 카테고리의 다른 글
String 배열 (0) | 2021.02.23 |
---|---|
배열(Array) (0) | 2021.02.21 |
조건문(if, switch) (0) | 2021.02.19 |
연산자 (0) | 2021.02.18 |
형변환(Casting) (0) | 2021.02.17 |
댓글