프로그램 수행 흐름을 바꾸는 역할을 하는 제어문(Control Statement) 중 하나로,
조건에 따라 다른 문장이 수행되도록 한다.
자바에서 조건식의 결과는 반드시 true or flase이어야 한다.
제어문(Control Statement) : 프로그램의 흐림(flow)를 바꾸는 역할을 하는 문장들.
조건문은 조건에 따라 다른문장이,반복문은 특정 문장들을 반복 수행.
블럭(block) 이라고 한다. 블럭은 {로 시작해서 } 로 끝나는데,} 다음에 문장의 끝을 의미하는 ;을 붙이지 않는다.tab 으로 들여쓰기를 해서 블럭 안에 속한 문장이라는 것을 알기 쉽게 해주는 것이 좋다.if(조건식){
조건식이 true 일 때 수행될 코드
}
조건식의 결과 값이 true면 -> if문 내부 코드가 수행됨.
false면 실행하지 않음
public void ex1() {
Scanner sc = new Scanner(System.in);
System.out.print("정수 입력 : ");
int input = sc.nextInt();
// 입력된 정수가 양수인지 검사
if(input>0) {
System.out.println("양수 입니다.");
}
if(input<=0) {
System.out.println("양수가 아닙니다.");
}
}
if(조건식){
조건식이 true일때 수행될 코드
} else {
조건식이 false일 때 수행될 코드
}
조건식의 결과 값이 true면 if 내의 코드가, false면 else 내의 코드가 수행됨
public void ex2() {
//홀짝검사
//입력받은 값이 홀인지 짝인지 출력
Scanner sc = new Scanner(System.in);
System.out.print("숫자를 입력하세요 : ");
int input = sc.nextInt();
if(0== input % 2) {
System.out.println("짝수");
}else {
System.out.println("홀수");
}
}
if (조건식){
//조건식1의 연산결과가 참일 때 수행될 문장들을 적는다.
}else if (조건식2) {
//조건식2의 연산결과가 참일 때 수행될 문장들을 적는다.
}else if (조건식3){ // 여러 개의 else if를 사용할 수 있다.
// 조건식3의 연산결과가 참일 때 수행될 문장들을 적는다.
}else { // 마지막은 보통 else블럭으로 끝나며, else블럭은 생략가능 함.
// 위의 어느 조건식도 만족하지 않을 때 수행될 문장들을 적는다.
}
조건식1의 결과 값이 true면 if문 내 코드 수행
조건식2의 결과 값이 true면 else if 내 코드 수행
모두 false면 else 내 코드 수행
💡 if는 true, false와 상관 없이 조건절 실행, if~else if~else는 조건문이 true면 이후 조건은 실행하지 않음
public void ex3() {
// 달(month)를 입력받아 해달달에 맞는 계절 출력
Scanner sc = new Scanner(System.in);
System.out.print("달 입력 : ");
int month = sc.nextInt();
//사용자에게 온도를 받음
System.out.print("온도 입력 : ");
int temperature = sc.nextInt();
String season;
//봄: 3, 4, 5
//여름: 6, 7, 8
//가을: 9, 10, 11
//겨울: 12, 1, 2
if(month == 3 || month == 4 || month == 5 ) {
season = "봄";
} else if(month >= 6 && month <= 8 ) {
season = "여름";
if( temperature >= 35) {
//season = season + "";
//season = "여름" + "폭염 경보"
season +=" 폭염 경보";
}else if(temperature >=33) {
season += "폭염 주의보";
}
} else if(month >=9 && month <=11) {
season = "가을";
} else if (month == 12 || month == 1 || month ==2 ){
season = "겨울";
} else {
season = "해당하는 계절 없음 ";
}
System.out.println(season);
}
public void ex4() {
//나이를 입력 받아
//13세 이하면 "어린이 입니다"
//13서 초과 19세 이하면 : "청소년 입니다."
//19세 초과 시 : "성인 입니다." 출력
Scanner sc = new Scanner(System.in);
System.out.print("나이 입력 : ");
int age = sc.nextInt();
if(age <= 13) {
System.out.println("어린이 입니다");
}else if(age >19) {
System.out.println("성인 입니다");
}else {
System.out.println("청소년 입니다");
}
}
public void ex5() {
//점수(100점 만점)을 입력받아
//90점 이상 : A
//80점 이상 90점 미만 : B
//70점 이상 80점 미만: C
//60점 이상 70점 미만 : D
//60점 미만 : F
//0점 미만, 100 초과 : "잘못 입력하셨습니다"
Scanner sc = new Scanner(System.in);
System.out.print("점수를 입력하세요: ");
int score = sc.nextInt();
String grade ; //결과를 담을 String 변수 선언
if(score < 0 || score > 100) {
grade = "잘못입력";
}else 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 = "F";
}
System.out.println(grade);
}
public void ex6() {
//놀이기구 탑승 제한 검사 프로그램
//조건 - 나이 : 12세 이상
// - 키 : 140.0cm 이상
//나이를 0~100세 사이로 입력하지 않은 경우 :"나이를 잘못 입력 하셨습니다."
//키를 0~250.0cm 사이로 입력하지 않은 경우 :"키를 잘못 입력 하셨습니다."
//-> 입력이 되자 마자 검사를 진행하여 잘못된 경우 프로그램 종료
// 나이 O , 키 X : "나이는 적절하나, 키가 적절치 않음";
// 나이 X , 키 O : "키는 적절하나, 나이는 적절치 않음";
// 나이 X , 키 X : "나이와 키 모두 적절치 않음";
// 나이 O , 키 O : "탑승가능";
Scanner sc = new Scanner(System.in);
System.out.print("나이를 입력하세요 : ");
int age = sc.nextInt();
String result ; //결과 담을 변수 선언 . 초기화 X
if(age >100 || age <0 ) {
result =" 나이를 잘못 입력 하셨습니다.";
}else {
System.out.print("키를 입력하세요 : ");
double height = sc.nextDouble();
if(height >250.0 || height <0) {
result =" 키를 잘못 입력 하셨습니다.";
} else {
//키를 잘 입력한 경우
if(age < 12 && height >= 140.0) {
result = "키는 적절하나, 나이는 적절치않음";
} else if(age >= 12 && height <140.0) {
result = "나이는 적절하나, 키는 적절치 않음";
} else if(age <12 && height <140.0){
result = "나이와 키 모두 적절치 않음";
} else {
result = "탑승가능";
}
}
}
System.out.println(result);
}
switch(식){
case 결과값 1 : 수행코드1; break;
case 결과값 2 : 수행코드2; break;
case 결과값 3 : 수행코드3; break;
...
default : case를 모두 만족하지 않을 경우 수행하는 코드 (==else)
}
조건식 하나로 많은 경우의 수 처리할 때 사용하며, 이때 조건식의 결과는 정수 또는 문자, 문자열
조건식의 결과 값과 일치하는 case문으로 이동, default문은 일치하는 case문이 없을 때 수행(= else )
public void ex1(){
//키보드로 정수를 입력 받아
//1 이면 "발간색"
//2 이면 "주황색"
//3 이면 "노란색"
//4 이면 "초록색"
//1~4 사이 숫자가 아니면 "흰색" 출력
Scanner sc = new Scanner(System.in);
System.out.print("정수입력: ");
int input = sc.nextInt();
String result;
/*if(input == 1 ){
result = "빨강";
}else if(input == 2) {
result = "주황";
}else if(input == 3) {
result = "노랑";
}else if(input == 4) {
result = "초록";
}else {
result = "흰색";
}
System.out.println(result);*/
switch(input) {
case 1 : result = "빨강"; break;
case 2 : result = "주황"; break;
case 3 : result = "노랑"; break;
case 4 : result = "초록"; break;
default : result = "흰색"; break;
}
System.out.println(result);
}
public void ex2() {
//봄: 3, 4, 5
//여름: 6, 7, 8
//가을: 9, 10, 11
//겨울: 12, 1, 2
Scanner sc = new Scanner(System.in);
System.out.print("달 입력: ");
int month = sc.nextInt();
String result;
switch(month){
case 3: case 4: case 5: result = "봄"; break;
case 6: case 7: case 8: result = "여름"; break;
case 9: case 10: case 11: result = "가을"; break;
case 12: case 1: case 2: result = "겨울"; break;
default : result = "잘못입력하셨습니다. "; break;
}
System.out.println(result);
}
public void ex3() {
//연산자(+ - * / %)
//정수 1: 5
//정수 2: 10
//연산자 : *
//계산결과 : 5 * 10 = 50
//0으로 나눌 수 없습니다.
Scanner sc = new Scanner(System.in);
System.out.print("정수 1: ");
int num1 = sc.nextInt();
System.out.print("정수 2: ");
int num2 = sc.nextInt();
System.out.print("연산자: ");
String op = sc.next();
switch(op) {
case "+": System.out.printf("%d + %d = %d\n", num1, num2, num1 + num2);
break;
case "/":
if(num2 == 0) {
System.out.println("0으로 못나눔");
}else {
System.out.printf("%d / %d = %d\n", num1, num2, num1 / num2);
}
break;
case "*": System.out.printf("%d * %d = %d\n", num1, num2, num1 * num2);
}
}