실행흐름제어(4가지)
if – else if – else
public static void main(String[] args) {
if (첫 번째 비교연산 또는 논리연산) {
// 첫 번째 비교연산 또는 논리연산의 결과가 true일 때 실행될 코드
}
else if (두 번째 비교연산 또는 논리연산) {
// 첫 번째 비교연산 또는 논리연산의 결과가 false이고
// 두 번째 비교연산 또는 논리연산의 결과가 true일 때 실행될 코드
}
else {
// 첫 번째 비교연산 또는 논리연산의 결과가 false이고
// 두 번째 비교연산 또는 논리연산의 결과가 false일 때 실행될 코드
}
}
변수의 범위
public static void main(String[] args) {
int number = 7;
if (number == 5) {
// number가 5와 같을 경우 실행될 코드.
System.out.println("숫자가 5와 같습니다.");
}
else if (number == 7) {
// number가 7과 같을 경우 실행될 코드.
System.out.println("숫자가 7과 같습니다.");
}
else {
// number가 5, 7이 아닐 경우 실행될 코드.
System.out.println("숫자가 5, 7이 아닙니다.");
}
}
난수를 이용한 간단한 Up / Down 게임
public static void main(String[] args) {
// double 타입의 난수
double randomNumber = Math.random();
// double타입의 난수를 정수로 변환 0 ~ 99
int answer = (int) (randomNumber * 100);
int value = 60;
if (answer == value) {
System.out.println("정답입니다!");
}
else if (answer > value) {
System.out.println("UP!");
}
else if (answer < value) {
System.out.println("DOWN!");
}
System.out.println("정답은 " + answer + "입니다.");
}
// 1.(필요: 성인인지 아동인지 / 비행요금 누적 변수) / 3인가족이 100만원으로 여행가기, 아동 기준은 19세
int money = 1_000_000;
int father = 40;
int mother = 36;
int daughter = 11;
int adultOneWayFlightFare = 300_000;
int kidOneWayFlightFare = 120_000;
int 여행경비 = 0;
if (father >= 19) {
여행경비 += adultOneWayFlightFare; //아빠 > 19 라면 adult요금을
그렇지 않으면 kid 요금을 누적
}
else {
여행경비 += kidOneWayFlightFare;
}
if (mother >= 19) {
여행경비 += adultOneWayFlightFare; //엄마 > 19 라면 adult요금을
그렇지 않으면 kid 요금을 누적
}
else {
여행경비 += kidOneWayFlightFare;
}
if (daughter >= 19) {
여행경비 += adultOneWayFlightFare; //딸 > 19 라면 adult 요금을
그렇지 않다면, kid요금을 누적
}
else {
여행경비 += kidOneWayFlightFare;
}
if (여행경비 <= money) {
System.out.println("여행가자!");
}
else {
System.out.println("다음에 가자ㅠㅠ");
}
//또다른 방법 : **삼항연산자** but 오류가 있을 수 있기 때문에 복잡한 곳에서는 안쓰는게 좋음
// 2. 만약, 나이가 15세 이상이고, 19세 미만이면"앤드게임" 영화를 관람할 수 있다.
int age = 16;
if (15 <= age && 19 > age ) {
System.out.println("앤드게임 영화를 관람할 수 있습니다.");
}
// 3. 연습문제 02. 만약, 지금 시간이 오후 1시(13시)가 지났고
내 체크카드에 8000원 보다 많은 돈이 있다면
식당에서 점심식사를 할 수 있다.
그렇지 않다면 편의점에서 라면을 사 먹을 수 있다.
int hour = 13;
int creditCard = 6000;
if (hour > 13 && creditCard > 8000) {
System.out.println("식당에서 점심식사를 할 수 있습니다.");
}
else {
System.out.println("편의점에서 라면을 사 먹을 수 있습니다.");
}
// 4. 만약, 나이가 19세 이상이면,
"범죄도시1" 영화를 관람할 수 있고
나이가 15세 이상이고 19세 미만이면
"앤드게임" 영화를 관람할 수 있고
나이가 12세 이상 15세 미만이면
"해리포터" 영화를 관람할 수 있고
그렇지 않다면 "뽀로로 극장판 공룡섬 대모험"을 관람할 수 있다.
int age2 = 14;
if (age2 > 19) {
System.out.println("범죄도시1을 관람할 수 있습니다.");
}
else if (age2 >= 15 && 19 > age2) {
System.out.println("앤드게임을 관람할 수 있습니다.");
// 앞에 19 미만 조건이 있으니 굳이 또 안써도 된다.
(age2 >= 15) 이렇게 작성해도 같은 결과!
}
else if (age2 >= 12 && 15 > age2) {
System.out.println("해리포터를 관람할 수 있습니다.");
// 앞에 15 미만 조건이 있으니 굳이 또 안써도 된다.
(age2 >= 12) 이렇게 작성해도 같은 결과!
}
else {
System.out.println("뽀로로 극장판 공룡섬 대모험을 관람할 수 있습니다.");
}
2. switch (실행흐름의 분리) (잘 안써서 중요하지 않음, if보다 써야할 양 많음)
변수 값에 따라 코드 제어가 가능한 switch
int value = 0;
switch(value) {
case 0:
value가 0일 때 실행할 코드 + case 1 실행
case 1:
value가 1일 때 실행할 코드
break; -> switch 종료
case 2:
value가 2일 때 실행할 코드 + default 실행
default:
위 조건이 모두 맞지 않거나 가장 마지막에 실행할 코드
}
if vs. switch
public class SwitchExam {
public static void main(String[] args) {
//01
int value = 0;
//switch (상태값) {}
// 상태값 : 숫자 혹은 문자열
switch (2) {
// 현재 상태값(value)이 0 이라면 여기부터 시작해라.
case 0:
System.out.println("현재 상태값은 0 입니다");
// 현재 상태값(value)이 1 이라면 여기부터 시작해라.
case 1:
System.out.println("현재 상태값은 1 입니다");
break; //
// 현재 상태값(value)이 2 라면 여기부터 시작해라.
case 2:
System.out.println("현재 상태값은 2 입니다");
// 현재 상태값(value)이 0,1,2 모두 아니거나 모든흐름이 종료되었을때 마지막에 실행되는 영역
default:
System.out.println("흐름이 종료되었습니다.");
}
//02
String status = "뚜껑을 연다";
switch (status) {
case "뚜껑을 연다":
System.out.println("밥솥을 꺼내세요");
case "밥솥을 꺼낸다":
System.out.println("쌀을 꺼내세요");
case "쌀을 꺼낸다":
System.out.println("밥솥에 쌀을 부으세요");
case "밥솥에 쌀을 붓는다":
System.out.println("물을 부으세요");
}
}
}
3. while(반복문 = ~동안 반복) = 무한반복자
- 조건이 false가 될때까지 반복을 수행하는 키워드
while(조건: 비교연산자or논리연산자or불린값 자체) {
반복될 코드 블럭
}
예시> 1부터 10까지 출력되는 코드 만들기
public static void main(String[] args) {
int i = 0;
while(i < 10) {
System.out.println(++i);
}
}
무한반복 예제 >
public static void main(String[] args) {
int i = 0;
while(true) { // 반복 조건이 true이므로 무한히 반복
System.out.println(++i);
}
}
4. for (~까지 반복) = 범위반복자
- 지정한 범위까지만 반복을 수행하는 반복문
- Array 또는 List 에서 사용
for(초기값; 반복조건; 증감식) {
반복할 코드
}
예제 >
아래 결과가 나오게 작성해라.
*
**
***
****
*****
public static void temp() {
String star = "";
for (int i = 1; i < 6; i++) {
star += "*";
System.out.println(star);
}
}
아래 호출 > temp();
1부터 100중 3,5,6의 배수만 출력해라
public static void temp() {
for (int i = 0; i < 101; i++) {
if (i % 3 == 0 && i % 5 == 0 && i % 6 == 0) {
System.out.println(i);
}
}
}
=> 여기서 6은 3의 배수이기도 하니 생략해도 된다.
아래 호출 > temp();
1부터 100까지의 합을 출력해라
public static void sum() {
int sum = 0;
for (int i = 1; i < 101; i++) {
sum += i;
}
System.out.println(sum);
}
아래 호출 > sum();
1부터 100 중 짝수만 출력하는 코드
i 값은 1부터 시작
i 값은 반복 할 때마다 1씩 증가
i 값이 101보다 작을 동안 반복
public static void main(String[] args) {
for(int i = 1; i < 101; i++) {
if (i % 2 == 0) {
System.out.println(i);
}
}
}