자바의 정석 Chapter 04 조건문과 반복문
조건문 - if, switch
조건문은 조건식 + 문장을 포함하는 블럭{}으로 구성되어 있다.
if와 switch문, 두 가지가 있으며 주로 if문이 사용 빈도가 높다.처리할 경우의 수가 많을 경우에만 switch를 사용한다.
조건문 if
- if는 가장 기본적인 조건문이며, 다음과 같이 '조건식'과 '괄호{}'로 이루어져 있다. if(만일) 조건식이 참이면 괄호{} 안의 문장들을 수행하라. 라는 의미로 이해하면 된다.
if(조건식) {
//조건식이 참(true)일 때 수행될 문장들을 적는다.
}
- 흔히 조건식을 작성할 때 실수하는 부분은 등가비교 연산자 '==' 대신 대입 연산자 '='를 사용하는 것이다.
이 둘은 전혀 다르니 사용 시 주의하도록 하자.
if - else문
if문의 변형인 if - else문의 구조는 다음과 같다. 'else'의 뜻이 '그 밖에 다른' 이므로 조건식의 결과가 참이 아닐 때, else 블럭의 문장을 수행하라는 의미이다.
if(조건식) {
//조건식이 참(true)일 때 수행될 문장들을 적는다.
}
else {
//조건식이 거짓(false)일 때 수행될 문장들을 적는다.
}
if - else if 문
if - else if 문은 처리해야할 경우의 수가 셋 이상인 경우에 사용되는 조건문이다.
if (조건식 1) {
//조건식 1의 연산결과가 참일 때 수행
}
else if (조건식 2) {
//조건식 2의 연산결과가 참일 때 수행
}
else if (조건식 3) {
//조건식 3의 연산결과가 참일 때 수행
}
else {
//마지막에는 보통 else블럭으로 끝나며, 생략가능하다.
//위의 어느 조건식도 만족하지 않을 때 수행될 문장
}
- 첫 번째 조건식부터 순서대로 평가해서 결과가 참인 조건식을 만나면, 해당 블럭{}만 수행하고 'if - else if'문 전체를 벗어난다.
- 만일 결과가 참인 조건식이 하나도 없으면, 마지막에 있는 else 블럭의 문장들이 수행된다 .
import java.util*;
class Score{
public static void main(Stirng args[]) {
int score = 0; //점수 저장 변수
char grade = ' '; //학점 저장 변수, 공백으로 초기화
System.out.print("점수를 입력하세요:");
Scanner sc = new Scanner(System.in);
score = sc.nextInt(); // 화면을 통해 숫자를 입력받음
if(score >= 90) //score가 90이상이면 A학점
grade = 'A';
else if(score >= 80) //score가 80이상이면 B학점
grade = 'B';
else if(score >= 70) //score가 70이상이면 C학점
grade = 'C';
else //나머지는 D학점
grade = 'D';
System.out.println("당신의 학점은 "+grade+"입니다.");
}
점수를 입력하면, 그에 해당하는 학점을 출력하는 간단한 예제이다. 예를들어 점수가 85점이면 처음 if문에서는 거짓이고 두번째 else if 문에서 참이므로 학점은 B가된다.
조건문 switch
if문은 조건식의 결과가 참과 거짓, 두 가지 밖에 없기 때문에 경우의 수가 많아질 수록 else-if를 추가해야 한다.
이러한 if문과 달리 switch문은 단 하나의 조건식으로 많은 경우의 수를 처리할 수 있다. 그래서 처리할 경우의 수가 많은 경우에는 switch 문을 권장하나, 제약이 많기 때문에 주의하여야 한다.
switch 문의 대략적인 정리는 이러하다.
1. 조건식을 계산한다.
2. 조건식의 결과와 일치하는 case문으로 이동한다.
3. 이후의 문장들을 수행한다.
4. break문이나 switch 문의 끝을 만나면 switch문 전체를 빠져나간다.
5. 만일 조건식의 결과와 일치하는 case문이 하나도 없는 경우에는 defalut문으로 이동한다.
- switch 문에서 break문은 각 case문의 영역을 구분하는 역할을 하므로 break문을 생략하면 그 다음 break문을 만날 때 까지의 문장들을 수행하게 된다. 이러한 이유로 각 case문의 마지막에 break문을 빼먹는 실수를 하지 않도록 주의하자.
switch 문의 제약 조건
1. switch 문의 조건식 결과는 정수 또는 문자열이어야 한다.
2. case 문의 값은 정수 상수만 가능하며 중복되지 않아야 한다.
public static void main(String[] args) {
int num, result;
final int ONE = 1;
...
switch(result) {
case '1': //OK. 문자 리터럴 (정수 상수)
case ONE: //OK. 정수 상수
case "YES": //OK. 문자열 리터럴
case num: //에러. 변수는 불가
case 1.0: //에러. 실수도 불가
}
0.0과 1.0 사이의 임의의 수를
반환하는 Math.random() 메서드
0.0 <= Math.random() < 1.0
난수(임의의 수)를 얻기 위해서는 Math.random()을 사용해야 한다. 주의할 점은 0.0은 범위에 포함되고 1.0은 포함되지 않는 다는 것이다.
반복문 - for, while,do - while
반복문 for과 while문에 속한 문장은 조건에 따라 한 번도 수행되지 않을 수 있지만 do - while문에 속한 문장은 무조건 최소한 한 번은 수행될 것이 보장된다. for와 while은 서로 변환이 가능하나 for문은 주로 반복횟수를 알고 있을 때 주로 사용한다.
for문
for문은 반복 횟수를 알고 있을 때 적합하다.
for(int i=1; i<=5; i++){
System.out.println("I can do it.");
}
기본식은 이런 형태로 이 식은 I can do it 이라는 것을 5번 출력하는 반복문이다.
for 문안에 ,를 이용하여 변수를 두 가지 쓸 수 있다.
for(int i=1,j=10; i<=10; i++,j--)
단 주의할 점은 변수의 타입이 같아야 한다는 것이다.
class StarPrint {
public static void main(String[] args) {
for(int i=1; i<=5; i++) {
for(int j=1; j<=10; j++) {
System.out.print("*");
}
System.out.println();
}
} //main의 끝
}
실행결과
위의 예제는 대표적으로 많이 쓰이는 별찍기 예제이다.첫번째 for문에서 행(i)의 개수를 정하고 두번째 for문에서 열(j)의 개수를 정한다음 차례로 반복문을 돌면서 *을 출력한다.
향상된 for문
for( 타입 변수명 : 배열 또는 컬렉션 ) {
// 반복할 문장
}
배열 또는 컬렉션에 저장된 값이 매 반복마다 하나씩 순서대로 읽혀서 변수에 저장된다. 그리고 반복문의 괄호{} 내에서는 이 변수를 사용해서 코드를 작성한다.
int[] arr = {10,20,30,40,50};
for(int i=0; i<arr.length; i++) {
System.out.println(arr[i]);
}
for(int tmp : arr) {
System.out.prinln(tmp);
}
위의 두 코드는 결국 같은 코드이다. 향상된 for문으로 보다 간결하게 나타낼 수 있다.
while문
for문에 비해 while문은 구조가 간단하다. while문은 조건식이 '참인 동안' 즉, 조건식이 거짓이 될 때 까지 블럭{} 내의 문장을 반복한다.
while (조건식) {
//조건식의 연산결과가 참인 동안, 반복될 문장들을 적는다.
}
- 먼저 조건식을 평가해서 조건식이 참이면 블럭{} 내의 문장을 수행하고, 거짓이면 while문을 벗어난다.
- 블럭{}의 문장을 수행하고 다시 조건식으로 돌아간다.
for문과 while문의 비교
//초기화, 조건식, 증감식
for(int i=1; i<=10; i++) {
System.out.println(i);
}
int i=1; // 초기화
while(i<=10) { //조건식
System.out.println(i);
i++; //증감식
}
위의 두 코드는 완전히 동일한 코드이다.
do - while문
do - while문은 while문의 변형으로 기본적인 구조는 같으나 조건식와 블럭{}의 순서를 바꿔놓은 것이다. 그래서 블럭{}을 먼저 수행한 후에 조건식을 평가한다. do-while문은 최소한 한번은 수행될 것을 보장한다.
do {
//조건식의 연산결과가 참일 때 수행될 문장들을 적는다.
} while (조건식); // 끝에 ';'를 잊지 않도록 주의!
1. do 블럭{}에 있는 식 실행
2. while 조건식이 참이면 do 블럭{} 실행, 거짓이면 반복문 빠져나감.
2. while 조건식이 거짓이 될 때 까지 do 블럭{} 실행
Author And Source
이 문제에 관하여(자바의 정석 Chapter 04 조건문과 반복문), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@novxfif/자바의-정석-Chapter-04-조건문과-반복문저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)