if문은 가장 기본적인 조건문으로 'if(조건식){}'의 형태로 구성된다.
조건식이 참이면 괄호({})안의 문장들을 수행한다.
if ( score > 60 ) {
System.out.println("합격입니다!");
}
score > 60 의 결과가 true이면 출력을 실행하고 false라면 출력 없이 다음 코드로넘어간다.
위 조건문에서 조건에 따라 실행될 코드가 한 줄이라면 블럭 없이 조건문 뒤에 붙여 작성해도 무관하다.
하지만 두 줄 이상의 코드라면 반드시 블럭으로 묶어야 한다.
if ( score > 60 ) System.out.println("합격입니다!");
if ( score > 60 ) {
System.out.println("합격입니다!");
System.out.println("축하드립니다!");
}
if-else문은 if문의 변형으로 조건문의 결과가 true일 때 if 블럭의 문장을 수행하고, false일 때 else 블럭의 문장을 수행한다.
if ( score > 60 ) {
System.out.println("합격입니다!");
} else {
System.out.println("불합격입니다...");
}
if-else문은 참과 거짓의 두가지 경우 중 하나가 수행되는 구조인데, 처리해야 할 경우가 셋 이상인 경우에 if-else if문을 사용한다.
if ( score >= 90 ) {
System.out.println("A");
} else if ( score >= 80 ) {
System.out.println("B");
} else if ( score >= 70 ) {
System.out.println("C");
} else if ( score >= 60 ) {
System.out.println("D");
} else {
System.out.println("F");
}
import java.util.Scanner;
class ex4_4 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int score = 0;
char grade = ' ';
System.out.print("점수 : ");
score = scanner.nextInt();
if ( score >= 90 ) {
grade = 'A';
} else if ( score >= 80 ) {
grade = 'B';
} else if ( score >= 70 ) {
grade = 'C';
} else if ( score >= 60 ) {
grade = 'D';
} else {
grade = 'E';
}
System.out.print("당신의 학점은 "+grade+"입니다.");
}
}
else if문을 사용할 때, 두번째 조건은 score 값이 80이상, 90미만이어야 하지만 조건문은 score>=80이라고 적는다.
위의 조건문이 false임을 전제로 하는 조건이기 때문에 중복해서 적을 필요가 없는 것이다.
물론 score<90 && score>=80 으로 적어도 문제는 없다.
if ( Month == 12 ) {
if ( Day == 25 ) {
System.out.println("Merry Christmas!");
}
}
if ( score >= 90 ) {
grade = 'A';
if ( score >= 98 ) {
opt = '+';
} else if ( score < 94 ) {
opt = '-';
}
}
그런 if문과 달리 switch문은 하나의 조건문에 대한 여러 경우의 수를 처리할 수 있고 표현이 간결하므로 알아보기 쉽다.
switch(score/10) {
case 9 :
grade = 'A'
break; // switch문에서 벗어남
case 8 :
grade = 'A'
break;
.
.
.
default :
// 조건식의 결과와 일치하는 case문이 없을 때에는 default로 수행
switch문은 각 case를 블럭으로 구분하지 않기 때문에 break문을 만나거나 switch문의 블럭이 끝날때까지 만나는 모든 문장들을 수행한다.
그래서 각 case문의 마지막에는 break를 잊지말고 적어야 한다.
switch문의 조건식의 결과는 정수 또는 문자열이어야 한다.
또한 case문의 값은 정수, 상수(문자 포함), 문자열만 가능하며 중복되지 않아야 한다.
switch ( month ) {
case 3:
case 4:
case 5:
System.out.println("지금은 봄입니다.");
break;
case 6: case 7: case 8:
System.out.println("지금은 여름입니다.");
break;
case 9: case 10: case 11:
System.out.println("지금은 가을입니다.");
default:
System.out.println("지금은 겨울입니다.");
}
0.0 <= Math.random() < 1.0
0.0*3 <= Math.random()*3 < 1.0*3 // 모든 변에 3을 곱함 -> 0.0과 3.0 사이의 난수 생성
0.0*3+1 <= Math.random()*3+1 < 1.0*3+1 // 모든 변에 1을 더함 -> 1.0과 4.0사이의 난수 생성
for문의 구조는 for(초기값;조건식;증감식){}으로 이루어져 있다.
for ( int i = 1 ; i <= 5 ; i ++ ) {
System.out.println(" I can do it ! " );
}
for문의 수행 순서는 우선 반복계수(i)가 초기화되고, 그에 대한 조건식이 참이라면 블럭 안의 문장을 수행한다.
수행을 마치면 증감식을 계산하고 계산 결과에 대한 조건식이 참이라면 반복해서 블럭 안의 문장을 수행한다.
그러다 조건식이 거짓이 되면 for문을 빠져나가게 된다.
class Ex4_9 {
public static void main(String[] args) {
for(int i = 1; i <= 5; i ++) {
System.out.println(i);
}
}
}
i값이 1로 초기화되고 조건식을 만족하는 동안 5번 반복되므로 실행 결과는 1부터 5까지의 숫자가 차례대로 출력될 것이다.
5번째 출력을 마치면 i값이 6이되므로 조건식이 거짓이 되어 for문을 벗어나고 실행이 종료된다.
이론 정리는 여기까지 하려고 한다.
오늘 TIL 실시간 강의를 들었는데 내가 하고 있는게 마냥 정답은 아니었던 것 같다.
다음 주부터는 좀 더 실습 위주로 문시해알을 정리해야겠다.
(문제점, 시도한 방법, 해결책, 알게된 점)