
제어문
if 문 : if ( 조건식 ) { }
- if 문의 조건식이 참(true)일 때
-> if 문 안의 코드를 실행한 후에 하위 코드를 진행- if 문의 조건식이 거짓(false)일 때
-> if 문을 건너띄고 하위 코드를 진행- if 문 사용시 들여쓰기 습관화
조건식 뒤에는 세미콜론 작성 금지
-> 세미콜론(;)은 끝을 의미
int money = 3000;
System.out.println("보유 금액 : " + money + "원");
System.out.println();
if(money >= 3000) {
System.out.println("아이스크림 사먹기~");
money -= 3000;
}
System.out.println("집으로 go~");
System.out.println("보유 금액 : " + money + "원");

int value = 7;
System.out.println("value : " + 7);
if(value%2 ==1) {
System.out.println("홀수");
}if(value%2 ==0) {
System.out.println("짝수");
}

int ia = 5;
int ib = 3;
System.out.println("ia : " + ia + " - ib : " + ib);
int max = 0;
// 한 줄 까지는 자동으로 인식하므로 {}(중괄호)를 쓰지 않아도 됨
if(ia > ib) max = ia;
if(ib > ia) max = ib;
System.out.println("큰 값 : " + max);

int data = -3;
System.out.println("data : " + data);
System.out.println();
if(data >=0) {
System.out.println("plus");
}
if(data <0) {
System.out.println("minus");
}
if(data >= 1 && data <= 10) {
System.out.println("1~10");
}

#1
- 세개의 수 중에서 큰수를 찾는 코드를 작성하세요
Scanner sc = new Scanner(System.in);
System.out.println("숫자 3개를 입력 : ");
int ia = sc.nextInt();
int ib = sc.nextInt();
int ic = sc.nextInt();
int max = 0;
// 내 코드
if (ia > ib && ia > ic) {
max = ia;
}
if (ib > ia && ib > ic) {
max = ib;
}
if (ic > ib && ic > ia) {
max = ic;
}
// 강사님 코드
if(ia>ib)
max = ia;
if(ib>ia)
max = ib;
if(ic>max)
max = ic;
System.out.println("max : " + max);

#2_1 (char일 경우 == 사용 가능)
- 성별(m, f)를 사용해서 m 이면 "남성", f 이면 "여성"을 출력하는 코드를 작성하세요.
System.out.println("성별을 m 또는 f를 입력 : ");
char gen = sc.next().charAt(0);
String type = "";
if (gen =='m')
type = "남성";
if (gen =='f')
type = "여성";
System.out.println("성별 : " + type);
#2_2 ( 문자열 값 비교는 .equals("문자열") )
System.out.println("성별을 m 또는 f를 입력 : ");
String gen2 = sc.next();
String type2 = "";
if (gen2.equals("m"))
type2 = "남성";
if (gen2.equals("f"))
type2 = "여성";
System.out.println("성별 : " + type2);
System.out.println();

#3
- 두수의 합이 2의 배수이면서, 3의 배수도 되는지를 확인하는 코드를 작성하세요.
System.out.println("숫자 2개 입력 :");
int id = sc.nextInt();
int ie = sc.nextInt();
int sum = id + ie;
if (sum % 2 == 0 && sum % 3 == 0) {
System.out.println("짝수이며 3의 배수이다.");
}
if (sum % 2 != 0 || sum % 3 !=0)
System.out.println("짝수가 아니거나 3의 배수가 아니다");

#4
- 두점 사이의 거리를 구하는 코드를 작성하세요
- 거리의 결과는 + 값으로만 나와야 합니다
Ex) 첫번째 위치 : 2
두번째 위치 : 7
거리 : 5
굳이 if문을 2개 쓸 필요가 없음
System.out.println("p1 : ");
int p1 = sc.nextInt();
System.out.println("p2 : ");
int p2 = sc.nextInt();
int dis = p1 - p2;
if (p1 < p2)
dis = p2 - p1;
System.out.println("거리 : " + dis);

if else 문
if ( 조건식 ) {
조건식 true 실행
} else {
조건식 false 실행
}
if 문의 조건식이 true일 때 실행하는 지역,
false일 때 실행되는 지역이 있다.
둘 중 한 곳은 무조건 실행 됨
else는 앞의 조건식이 false 면 작동하므로 조건식을 적지 않는다.
int var = 7;
System.out.println("var : " + var);
System.out.println();
if(var % 2 == 1) {
System.out.println("홀수");
}
if(var % 2 == 0) {
System.out.println("짝수");
}
// 속도를 따진다면 아래가 효율적임
if(var % 2 == 1) {
System.out.println("홀수");
}else {
System.out.println("짝수");
}

int point = 2000;
System.out.println("현재 포인트 : " + point);
if(point >= 2000) {
System.out.println("아이템 구매 완료!!");
point -= 2000;
}else {
System.out.println("포인트가 부족합니다.");
}
System.out.println("현재 포인트 : " + point);


#1
세과목의 점수를 확인해서 합격, 불합격을 알려주는 코드를 작성하세요
- 합격 조건 : 각 과목별 점수가 40 이상이면서, 평균도 60 이상이어야 합니다
Scanner sc = new Scanner(System.in);
System.out.println("1과목 점수 입력 : ");
int s1 = sc.nextInt();
System.out.println("2과목 점수 입력 : ");
int s2 = sc.nextInt();
System.out.println("3과목 점수 입력 : ");
int s3 = sc.nextInt();
int tot = s1 + s2 + s3;
double avg = tot / 3.0;
if (s1 >= 40 && s2 >= 40 && s3 >= 40 && avg >= 60) {
System.out.println("합격");
} else {
System.out.println("불합격");
}

#2
ATM 코드를 작성하세요
- 현재 통장 잔고를 설정합니다
인출 금액을 설정합니다
인출 금액이 정상이면, 출금 후 잔액을 알려줍니다- 인출 조건 : 잔액보다 작거나 같아야 합니다
10000원 단위만 가능합니다( 11000 X, 10001 X )- -(minus) 금액은 안됩니다
System.out.println("현재 통장 잔고 : ");
int nm = sc.nextInt();
System.out.println("인출 금액 입력 : ");
int om = sc.nextInt();
if (om <= nm && om % 10000 == 0 && om > 0) {
nm -= om;
System.out.println("출금액 : " + om + "원");
System.out.println("잔액 : " + nm+"원");
} else {
System.out.println("인출금액 오류");
}
System.out.println("잔액 : " + nm+"원");
}

중첩 if
조건식에 대한 결과에 대해서 세분화 하거나, 재분류 할 때 사용
if ( 조건식_a ) {
조건식_a 가 참이면 실행
if ( 조건식_b) {
조건식_a, 조건식_b둘다 참이면 실행
}else{
조건식_a참, 조건식_b 거짓이면 실행
}
}
int data = -5;
int aData =0;
System.out.println("data : " + data);
System.out.println();
if (data >= 0) {
System.out.println("plus");
if (data % 2 == 1) {
System.out.println("홀수");
} else {
System.out.println("짝수");
}
} else {
System.out.println("minus");
aData = data * -1;
if (aData % 2 == 1) {
System.out.println("홀수");
} else {
System.out.println("짝수");
}
}

#1
보유한 금액에 따라서 구매 가능한 아이템 목록을 보여주는 코드를 작성하세요
- 3000 미만
: 일반검 , 일반방패 , 물약
5000 미만
: 쇠검 , 쇠방패 , 에너지드링크
5000 이상
: 아이템 팩키지
import java.util.Scanner;
Scanner sc = new Scanner(System.in);
System.out.println("보유 금액 입력 : ");
int m = sc.nextInt();
String i1 = "일반검, 일반방패, 물약";
String i2 = "쇠검, 쇠방패, 에너지드링크";
String i3 = "아이템팩키지";
if (m >=0) {
System.out.println(i1);
if(m>=3000) {
System.out.println(i2);
if(m>=5000) {
System.out.println(i3);
}
}
}

#2 물품의 크기, 무게에 따라서 사용 가능한 카트를 알려주는 코드를 작성하세요
- 크기 무게 cart
small 50kg 미만 cart-A
small 50kg 이상 cart-B
large 50kg 미만 cart-C
large 50kg 이상 cart-D
String size = "";
double weight = 0;
String cart = "";
System.out.print("크기 입력 > ");
size = sc.next();
if(size.equals("small") || size.equals("large")) {
System.out.print("무게 입력 > ");
weight = sc.nextDouble();
if(size.equals("small")) {
if(weight < 50) {
cart = "cart-A";
} else {
cart = "cart-B";
}
} else {
if(weight < 50) {
cart = "cart-C";
} else {
cart = "cart-D";
}
}
System.out.println(cart + " 사용하세요");
} else {
System.out.println("크기 오류");
}

if ~ else if
여러개의 조건식 중에서 하나만을 찾아서 실행하게 된다.
- if ( 조건식_a ) {
조건식_a 가 참이면 실행
} esle if( 조건식_b ) {
조건식_a 거짓, 조건식_b 가 참이면 실행
}... {
} else {
상위에 모든 조건식이 거짓이면 실행( 필수x )
}
차이점 :
if 문은 각각 실행됨
else if문은 if~ else if 문이 하나의 묶음
int var =25;
System.out.println("var : " + var);
System.out.println();
System.out.println("- if 여러개 - ");
if(var > 20)
System.out.println("20 보다 큰 수");
if(var > 10)
System.out.println("10 보다 큰 수");
if(var > 0)
System.out.println("0 보다 큰 수");
System.out.println("- if ~ else if - ");
if(var > 20)
System.out.println("20 보다 큰 수");
else if(var > 10)
System.out.println("10 보다 큰 수");
else if(var > 0)
System.out.println("0 보다 큰 수");

불필요한 조건식 지우기
상황에 맞게 if / else if를 사용
-> 코드 간결 -> 성능 우수
int data = 27;
System.out.println("data : " + data);
System.out.println();
if(data >= 1 && data <= 10)
System.out.println("1 ~ 10");
if(data >= 11 && data <= 20)
System.out.println("11 ~ 20");
if(data >= 21 && data <= 30)
System.out.println("21 ~ 30");
if(data >=1 ) {
if(data >= 1 && data <= 10)
System.out.println("1 ~ 10");
else if(data <= 20)
System.out.println("11 ~ 20");
else if(data <= 30)
System.out.println("21 ~ 30");
}

조건식 순서 중요성
int num = 15;
System.out.println("num : " + num);
System.out.println();
if (num % 3 == 0 && num % 5 == 0) {
System.out.println("3 and 5의 배수");
} else if (num % 5 == 0) {
System.out.println("5의 배수");
} else if (num % 3 == 0) {
System.out.println("3의 배수");
} else {
System.out.println("?");
}
if (num % 3 == 0) {
System.out.println("3의 배수");
} else if (num % 5 == 0) {
System.out.println("5의 배수");
} else if (num % 3 == 0 && num % 5 == 0) {
System.out.println("3 amd 5의 배수");
} else {
System.out.println("?");
}

#1
차량 속도를 확인해서 벌점, 과태료를 알려주는 코드를 작성하세요
| 속도(km) | 벌점 | 과태료(만원) |
|---|---|---|
| 0 ~ 100 | 0 | 0 |
| 101 ~ 120 | 0 | 3 |
| 121 ~ 140 | 15 | 6 |
| 141 ~ 160 | 30 | 9 |
| 161 ~ | 60 | 12 |
import java.util.Scanner;
Scanner sc = new Scanner(System.in);
System.out.println("속도 입력");
int v = sc.nextInt();
int p = 0;
int f = 0;
if (v >= 161) {
p = 60;
f = 12;
} else if (v >= 141) {
p = 30;
f = 9;
} else if (v >= 121) {
p = 15;
f = 6;
} else if (v >= 101) {
p = 0;
f = 3;
}
System.out.println("속도 : " + v + "km , 벌점 : " + p + "점, 과태료 : " + f + "만원");

#2
- 몸무게(kg), 키(cm) 를 사용해서 BMI(체질량지수)를 구하는 코드를 작성하세요
- BMI = 몸무게(kg) / 키(m) * 키(m)
- bmi 몸상태
~ 18.4 저체중
18.5 ~ 22.9 정상
23.0 ~ 24.9 과체중
25.0 ~ 29.9 비만
30.0 ~ 고도비만
System.out.println("키 입력 : \n" + "(단위 : m)");
double h = sc.nextDouble();
double h1 = h/100;
System.out.println("몸무게 입력 : \n" + "(단위 : kg)");
double w = sc.nextDouble();
double b = w / (h1 * h1);
String a = "저체중";
if (b > 30) a = "고도비만";
else if (b > 25) a = "비만";
else if (b > 23) a = "과체중";
else if (b > 18.5) a = "정상";
System.out.println("--- 몸상태 ---\n" + "키\t: " + h1 + "\n" + "몸무게\t: " + w);
System.out.printf("BMI\t: %.1f", b);
System.out.println("\n몸상태\t: " + a);
