여태 코드의 흐름이 무조건 위에서 아래로 한 문장씩 순차적으로 진행되었는데
코드에도 조건에 따라 다른 문장을 다룰 경우가 생긴다 그것을 우리는 조건문이라고하며
그 중 if문은 가장 기본적인 조건문이다. 한번 알아보자!
if(조건식) {
// if 문 조건식이 참(true)일때 수향될 문장들을 적는다
// 이처럼 조건식을 () 안에 작성하고 그 조건식에 맞춰서 수행될 코드를
// {} 안에 작성하면 된다.
}
예를 한번 들어보자.
if(score > 80) {
system.out.println("합격입니다.");
// 만약 score= 90이라고 가정하면
// 조건식은 참이 되기때문에 {}안에 있는 코드가 실행된다.
}
조건식 | 조건식이 참일 조건 |
---|---|
90 <= x && x <= 100 | 정수 x가 90이상 100이하일때 |
x < 0 \\ x > 100 | 정수 x가 0보다 작거나 100보다 클 때 |
x%3==0 && x%2!=0 | 정수x가 3의 배수이지만 2의 배수가 아닐 때 |
ch=='y' \\ ch=='Y' | ch가 'y'이거나 'Y'일 때 |
'A' <= ch && ch <= 'Z' | 문자 ch가 대문자일 때 |
'a' <= ch && ch <= 'z' | 문자 ch가 소문자일 때 |
'0' < 초 && ch <= '9' | 문자ch가 숫자일 때 |
str.equals("yes") | 문자열 str이 "yes"일 때 (대소문자 구분) |
public class Ex4_2 {
public static void main(String[] args) {
int x = 0;
System.out.printf("x=%d 일때, 참인 것은 %n", x);
if(x==0) System.out.println("x==0");
if(x!=0) System.out.println("x!=0");
if(!(x==0)) System.out.println("!(x==0)");
if(!(x!=0)) System.out.println("!(x!=0)");
x = 1;
System.out.printf("x=%d 일 때 , 참인 것은 %n", x);
if(x==0) System.out.println("x==0");
if(x!=0) System.out.println("x!=0");
if(!(x==0)) System.out.println("!(x==0)");
if(!(x!=0)) System.out.println("!(x!=0)");
//결과값 :
x=0 일 때 , 참인 것은 x==0
!(x!=0)
x=1 일 때 ,참인것은 x!=0 !(x==0)
}
}
if문의 변형인 if-else문의 구조는 다음과 같다 if문에 else블럭을 추가하면된다.
if문의 조건식 결과가 참이 아닐 때 , 즉 거짓일 때 else블럭의 문장을 수행하라는 의미다.
if(조건식){
// 조건식이 참(true)일 때 수행될 문장들을 적는다
} else {
// 조건식이 거짓(false)일 때 수행될 문장들을 적는다.
}
import java.util.Scanner; // Scanne클래스를 추가
class Ex3_1 {
public static void main(String[] args) {
System.out.print("숫자를 입력하세요.>");
Scanner scanner = new scanner(System.in);
int input = scanner.newxtInt(); // 화면을 통해서 입력 받는 숫자를 input에 저장
if(input==0) {
System.out.println("입력하신 숫자는 0입니다.");
} else { // input!=0인 경우
System.out.println("입력하신 숫자느 0이 아닙니다.");
}
}
}
if-else문은 두 가지 경우 중 하나 인데 그 이상은 어떤식으로 해야할까하면 이런식으로
사용해야 한다. 다음과 같다.
if (조건식1) {
// 조건식1이 참일 때 수행하는 코드 문장.
} else if (조건식2) {
// 조건식2이 참일 때 수행하는 코드 문장.
} else if (조건식3) {
// 조건식3이 참일 떄 수행하는 코드 문장.
} else { // 마지막은 보통 else블럭으로 끝나며 ,else블럭은 생략가능하다.
// 위에 어느 조건도 충족하지 않으면 실행되는 코드 문장.
}
4-1 Ex)
import java.util.Scanner; // Scanner클래스 추가
class Ex4_1 {
public static void main (String[] args) {
int score = 0; // 점수 저장하기 위한 변수
char grade = ' ' ; // 학점 저장하기 위한 변수, 공백으로 초기화
System.out.print("점수를 입력하세요.>");
Scanner scanner = new Scanner(System.in);
score = scanner.nextInt(); //화면을 통해 입력받은 숫자를 score에 저장
if (score >=90) { // A학점 기준
grade = 'A';
} else if (score >=80) { // B학점 기준
grade = 'B';
} else if (score >=70) { // C 학점 기준
grade = 'C';
} else { // 그 외 나머지 점수 기준
grade = 'D';
}
System.out.println("당신의 학점은 " + grade + "입니다."); // 학점 출력
}
}
if 문의 블럭 내에 또 다른 if 문을 포함시키는 것이 가능한데 이것을 중첩 if 문 이라고하며
횟수에는 큰 제한이 없다.
if(조건식) {
// 조건식1의 결과가 true일 떄 수행될 코드 문장들을 작성
if(조건식2) {
// 조건식1과 조건식2가 모두 true일 때 수행될 코드 문장들을 작성
} else {
// 조건식1이 true이고, 조건식2가 false일 떄 수행되는 코드 문장들
}
} else {
// 조건식1이 false일 때 수행되는 코드 문장들
}
5-1 Ex)
import java.util.Scanner; // Scanner클래스 추가
public static void main(String[] args) {
int score = 0;
char grade = ' ', opt ='0';
System.out.print("점수를 입력하세요.>");
Scanner scanner = new Scanner(System.in);
score = scanner.nextInt();
System.out.printf("당신의 점수는 %d입니다%n",socre);
if (score >= 90) {
grade = 'A';
if (score >= 98) {
opt = '+';
} else of (score < 94) {
opt = '-';
}
} else if (score >=80) {
greade = 'B';
if (score >= 88) {
} opt = '+';
} else if (score < 84) {
opt = '-';
}
} else {
grade = 'C';
}
System.out.printf("당신의 학점은 %c%c입니다.%n" , grade, opt);
}
}
if문은 조건식의 결과가 참과 거짓, 두 가지 밖에 없기 때문에 경우의 수가
많아지면 else-if문을 계속 추가해줘야한다. 그러면 조건식이 복잡해지고 , 여러 개의
조건식을 게산해야하므로 시간이 굉장히 오래걸린다.
이러한 if문 과는 달리 Switch문을 이용하여 많은 경우의 수를 처리할 수 있다.
다만, Swtch문은 제약 조건이 있기 때문에 어쩔 수 없이 if문을 사용하는 경우가 있다
switch (조건식1) {
case 1 :
// 조건식의 결과가 1과 값이 같을 경우 수행될 문장들
// ...
break;
case 2 :
// 조건식의 결과가 2과 값이 같을 경우 수행될 문장들
// ...
break;
//...
default :
// 조건식의 결과와 일치하는 case문이 없을 때 수행될 문장들
// ...
}
***Switch문의 제약조건을 알아보자
1. switch문의 조건식 결과는 정수 or 문자열이어야 한다.
2. case문의 값은 정수 상수(문자 포함), 문자열만 가능하며,중복되지 않아야 한다.
6-1 제약조건 Ex)
import java.util.Scanner;
public static void(String[] args) {
System.out.print("현재 월을 입력하세요.");
Scanner scanner = new Scanner(System.in);
int month = scanne.nextInt();
switch(month) {
case 3:
case 4:
case 5:
System.out.println("현재의 계절은 봄입니다.");
break;
case 6: case 7: case8:
System.out.println("현재의 계절은 여름입니다.");
break;
case 9: case 10: case 11:
System.out.println("현재의 계절은 가을입니다.");
break;
default: // 그외
System.out.println("현재의 계절은 겨울입니다.");
}
}
}
난수(임의의 수)를 얻기 위해서는 Math.random()을 사용해야 하는데,
이 메서드는 0.0과 1.0사이의 범위에 속하는 하나의 double값을 반환한다.
0.0은 범위에 포함되고 1.0은 포함되지 않는다.
// 기본
0.0 <= Math.random() < 1.0
// 예시 1~3
1. 각변에 3을 곱한다.
0.0 *3 <= Math.random() * 3 < 1.0 * 3
2. 각변에 int형으로 변환한다.
(int)0.0 <= (int)(Math.random() *3) < (int) 3.0
3. 각변에 1응 더한다.
0 + 1 <= (int)(Math.random()*3) +1 < 3+1
1 <= (int)(Math.random()*3)+1 < 4
-->>> 1~3사이에 정수 중 하나를 얻을 수 있다 4는 포함되지 않는다.
7-1 Ex)
class rd {
public static void main (String[] args) {
int num = 0;
//{}안에 내용을 5번 반복한다.
for( int i =1; i <=5 i++ ) {
num = (int) (Math.random() *6 ) +1 ;
System.out.println(num);
}
}
}
위와같이 반복문은 조건문은 나중에 굉장히 많이 쓰이는 걸로 알고있다.
많은 복습이 필요할꺼같고 자주 사용해봐야할꺼 같다.