if문
조건식이 true일 때만 내부 코드 수행
if(조건식) {
조건식이 true일 때 수행할 코드
}
if-else 문
-조건식 결과가 true이면 if문 수행
-조건식 결과가 false이면 else문 수행
if(조건식) {
조건식이 true일 때 수행할 코드
} else {
조건식이 false일 때 수행할 코드
}
package edu.kh.control.condition;
import java.util.Scanner;
public class ConditionExample {
public void ex1() {
//if문
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("양수가 아닙니다.");
}
}
public void ex2() {
//if-else 문
Scanner sc = new Scanner(System.in);
//홀짝 검사
System.out.print("정수 입력: ");
int input = sc.nextInt();
if(input%2!=0) {
System.out.println("홀수입니다.");
} else { //짝수 또는 0 입력 시 수행
//*중첩 if문
if(input == 0) {
System.out.println("0입니다.");
}else {
System.out.println("짝수입니다.");
}
}
}
public void ex3() {
//if-else, if-else
//양수 음수 0 판별
Scanner sc = new Scanner(System.in);
System.out.print("정수 입력: ");
int input = sc.nextInt();
if(input>0) {//input이 양수일 경우
System.out.println("양수입니다.");
}else if(input<0) {//input이 음수일 경우
//바로 위에 있는 if문이 만족되지 않은 경우 수행
System.out.println("음수입니다.");
}else {
//모든 if, if else가 만족되지 않은 경우 수행
System.out.println("0입니다.");
}
}
public void ex4() {
//달(month)을 입력받아 해당 달에 맞는 계절 출력
Scanner sc = new Scanner(System.in);
System.out.print("달 입력: ");
int month = sc.nextInt();
String season; //아래 조건문 수행 결과를 저장할 변수 선언
//봄(3,4,5)/ 여름(6,7,8)/ 가을(9,10,11)/ 겨울(12,1,2)
//해당하는 계절이 없을 경우 "해당하는 계절이 없습니다." 출력
/*
if(month>=3 && month <=5) {
System.out.println("봄입니다.");
}else if(month>=6 && month<=8) {
System.out.println("여름입니다.");
}else if(month>=9 && month<=11) {
System.out.println("가을입니다.");
}else if(month>=12 && month<=2) {
System.out.println("겨울입니다.");
}else {
System.out.println("해당하는 계절이 없습니다.");
}
*/
/*
동일한 결과(||사용)
if(month==3 || month==4 || month==5) {
System.out.println("봄입니다.");
}else if(month==6 || month==7 || month==8) {
System.out.println("여름입니다.");
}else if(month==9 || month==10 || month==11) {
System.out.println("가을입니다.");
}else if(month==12 || month==1 || month==2) {
System.out.println("겨울입니다.");
}else {
System.out.println("해당하는 계절이 없습니다.");
}*/
if(month>=3 && month <=5) {
season="봄";
}else if(month>=6 && month<=8) {
season="여름";
}else if(month>=9 && month<=11) {
season="가을";
}else if(month>=12 && month<=2) {
season="겨울";
}else {
season="해당하는 계절이 없습니다.";
}
System.out.println(season);
}
public void ex5() {
//나이를 입력받아
//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("청소년입니다.");
}
/*
if(age<=13) {
System.out.println("어린이입니다.");
}else if (age<=19) { //age>13 && 안 써도 앞의 조건식을 거쳐왔기 때문에 OK
System.out.println("청소년입니다.");
}else {
System.out.println("성인입니다.");
}
*/
}
public void ex6() {
// 점수(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 result;
if(score<0 || score>100) {
result="잘못 입력하셨습니다.";
}else if(score>=90) {
result="A";
}else if(score>=80) {
result="B";
}else if(score>=70) {
result="C";
}else if(score>=60) {
result="D";
}else {
result="F";
}
System.out.println(result);
}
public void ex7() {
// 놀이기구 탑승 제한 검사
// 나이가 12세 이상, 키 140.0cm 이상 일 경우에만 "탑승 가능"
// 나이가 12미만인 경우 : "적정 연령이 아닙니다."
// 키가 140.0cm 미만 : "적정 키가 아닙니다."
// 나이를 0세 미만, 100세 초과 시 : "잘못 입력 하셨습니다."
Scanner sc = new Scanner(System.in);
System.out.print("나이 입력: ");
int age = sc.nextInt();
// System.out.print("키 입력: ");
// double height = sc.nextDouble();
String result;
if (age<0 || age>100) {
result="잘못 입력하셨습니다.";
}else {
System.out.print("키 입력: ");
double height = sc.nextDouble();
if(age<12) {
result="적정 연령이 아닙니다.";
}else if(height <140.0) {
result="적정 키가 아닙니다.";
}else {
result="탑승 가능";
}
}
/* 키 입력 받은 후 if문 실행하는 경우
if (age<0 || age>100) {
result="잘못 입력하셨습니다.";
} else {
if(age <12) {
result="적정 연령이 아닙니다.";
}else {
if(height < 140.0) {
result="적정 키가 아닙니다.";
}else {
result="탑승 가능";
}
}
}
*/
/* 키 입력 받은 후 if문 실행하는 경우
if (age<0 || age>100) {
result="잘못 입력하셨습니다.";
}else if(age<12) {
result="적정 연령이 아닙니다.";
}else if(height<140.0) {
result="적정 키가 아닙니다.";
}else {
result="탑승 가능";
}
*/
System.out.println(result);
}
public void ex8() {
// 놀이기구 탑승 제한 검사 프로그램
// 조건 - 나이 : 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;
if (age<0 || age>100) {
result="나이를 잘못 입력하셨습니다.";
}else {
System.out.print("키 입력: ");
double height = sc.nextDouble();
if (height<0 || height>250.0) {
result="키를 잘못 입력하셨습니다.";
}else {
if (!(age>=12 || height >=140.0) ) {
result="나이 키 모두 적절하지 않음";
}else {
if(age<12) {
result="키는 적절하나 나이가 적절하지 않음";
}else if (height<140.0) {
result="나이는 적절하나 키가 적절하지 않음";
}else {
result="탑승가능";
}
}
}
}
System.out.println(result);
*/
Scanner sc = new Scanner(System.in);
System.out.print("나이 입력: ");
int age = sc.nextInt();
String result;
if(age<0 || age>100) {
result="나이를 잘못 입력하셨습니다.";
}else {
System.out.print("키 입력: ");
double height = sc.nextDouble();
if (height<0 || height>250.0) {
result="키를 잘못 입력하셨습니다.";
}else {
if (age <12 && height >=140.0) { //나이X, 키 O
result="키는 적절하나 나이가 적절하지 않음";
}else if(age >= 12 && height <140.0) {//나이 O, 키 X
result="나이는 적절하나, 키가 적절하지 않음";
}else if(age <12 && height <140.0) {//나이 X, 키 X
result="나이와 키 모두 적절하지 않음";
}else {
result="탑승 가능";
}
}
}
System.out.println(result);
}
}
switch문
-식 하나의 결과로 많은 경우의 수를 처리할 때 사용하는 조건문
-> 식의 결과로 얻은 값과 같은 case 구문이 수행된다.
switch(식) {
case 결과값1: 수행코드1; break;
case 결과값2: 수행코드2; break;
case 결과값3: 수행코드3; break;
...
default: case를 모두 만족하지 않을 경우 수행하는 코드
}
package edu.kh.control.condition;
import java.util.Scanner;
public class SwitchExample {
//switch문
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="흰색";
}
*/
//여러 값이 나오는 식
switch(input) {
case 1: result ="빨간색"; break;
//input에 입력된 값이 1인 경우(case)
//result 변수에 "빨간색"을 대입하고 switch문을 멈춤(break)
case 2: result ="주황색"; break;
case 3: result ="노란색"; break;
case 4: result ="초록색"; break;
default: result="흰색"; break;
}
System.out.println(result);
}
public void ex2() {
//정수 입력받아 4팀으로 나누기
Scanner sc = new Scanner(System.in);
System.out.print("번호 입력: ");
int input = sc.nextInt();
String team;
switch(input%4) { //1, 2, 3, 0
case 1: team="백팀"; break;
case 2: team="홍팀"; break;
case 3: team="청팀"; break;
default: team="흑팀";
}
System.out.println(team + "입니다.");
}
public void ex3() {
//switch문에서 break 역할
//달 입력 시 계절 판별(switch버전)
Scanner sc = new Scanner(System.in);
System.out.print("달(월) 입력: ");
int month = sc.nextInt();
String season;
switch(month) {
case 3: case 4: case 5: season ="봄"; break;
case 6: case 7: case 8: season ="여름"; break;
case 9: case 10: case 11: season ="가을"; break;
case 12: case 1: case 2: season ="겨울"; break;
default : season="잘못 입력하셨습니다."; break;
}
System.out.println(season);
}
public void ex4() {
//정수 2개와 연산자( +-*/%) 1개를 입력받아 결과 출력
//)ex
//정수1 입력: 5
//연산자 입력: *
//정수2 입력: 2
//계산 결과: 5*2=10
Scanner sc = new Scanner(System.in);
System.out.print("정수1 입력: ");
int num1 = sc.nextInt();
System.out.print("연산자 입력: ");
//sc.nextChar(); 스케너는 문자 하나(char)를 입력 받는 기능이 없다.
String op = sc.next(); //다음에 입력되는 한 단어(String읽어오기)
// (char)'a' != (String)"a"
System.out.print("정수2 입력: ");
int num2 = sc.nextInt();
//case에 작성되는 값은 switch 식의 겨로가값 자료형의 리터럴 표기법이다.
switch(op) {
case "+": System.out.printf("%d + %d = %d\n", num1, num2, num1+num2); break;
case "-": System.out.printf("%d - %d = %d\n", num1, num2, num1-num2); break;
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; //break 주의
case "%": System.out.printf("%d %% %d = %d\n", num1, num2, num1%num2); break;
default : System.out.println("존재하지 않는 연산자입니다."); break;
}
}
}
package edu.kh.control.condition;
public class ConditionRun {
public static void main(String[] args) {
ConditionExample condition = new ConditionExample();
condition.ex1();
/*
정수 입력: -6
양수가 아닙니다.
*/
condition.ex2();
/*
정수 입력: 10
짝수입니다.
*/
condition.ex3();
/*
정수 입력: -100
음수입니다.
*/
condition.ex4();
/*
달 입력: 9
가을입니다.
*/
condition.ex5();
/*
나이 입력: 20
성인입니다.
*/
condition.ex6();
/*
점수 입력: -100
잘못 입력하셨습니다.
*/
condition.ex7();
/*
나이 입력: 66
키 입력: 3
적정 키가 아닙니다.
*/
condition.ex8();
/*
나이 입력: 9
키 입력: 140.0
키는 적절하나 나이가 적절하지 않음
*/
SwitchExample switchEx = new SwitchExample();
switchEx.ex1();
/*
정수 입력: 3
노란색
*/
switchEx.ex2();
/*
번호 입력: 99
청팀입니다.
*/
switchEx.ex3();
/*
달(월) 입력: 5
봄
*/
switchEx.ex4();
/*
정수1 입력: 4
연산자 입력: /
정수2 입력: 0
0으로 나눌 수 없습니다.
*/
}
}