제어문
프로그램의 흐름을 제어 할 수 있도록 도와주는 실행문
조건문 : 조건 만족여부에 따라 실행문을 제어 if~else if
선택문 : 변수에 일치하는 경우의 값에 따라 실행문 제어 Switch~case
반복문 : 특정 실행문을 여러번 반복 실행 할 수 있도록 제어 for , while
●조건문(if~else)
조건식의 값이 참인지 거짓인지에 따라 실행문의 제어가 결정된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 |
if(수업이 있으면) {
출석한다
}
boolean lecture = true;
if(lecture == true){
System.out.println("출석");
}
//조건식이 참일때 실행문을 실행
if(수업이 있으면){
출석
}
else(수업이 없으면) {
집에서 쉰다
}
//조건을 만족할 때 실행할 문장과
//조건을 만족하지 않을때 실행할 문장을 지정 |
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 |
package e1_condition;
import java.util.Scanner;
//일당 구하기
//시간당 6470원
//일하는 시간 입력
//8시간 이상 근무시에는 초과시간 1.5배
public class p1_if_pay {
public static void main(String[] args) {
int salary = 6470;
int workingTime;
double extraSalary=0;
Scanner input= new Scanner(System.in);
System.out.print("working Time : ");
workingTime = input.nextInt();
if (workingTime>8) {
salary = salary*8;
extraSalary = 1.5*((workingTime-8)*6470);
System.out.println("일당은 "+(salary+extraSalary));
} else {
salary = salary*workingTime;
System.out.println("일당은 "+salary+"입니다.");
}
}
} |
cs |
●조건문(if 문의 중첩)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 |
package e1_condition;
public class p1_if_pay {
public static void main(String[] args) {
int a=-1;
if(a>0) {
if(a>10) {
System.out.println("a는 10보다 크다");
}
}
else {
System.out.println("a는 0보다 작다");//이 부분이 실행 된다
}
}
} |
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 |
package e1_condition;
public class p1_if_pay {
public static void main(String[] args) {
int a=-1;
if (a>0) {
if(a>10) {
System.out.println("a는 10보다 크다");
}
else {
System.out.println("a는 0보다 작다");//이 부분이 실행되지 않는다.
}
}
}
} |
cs |
●조건문(if else if)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 |
package e1_condition;
public class p1_if_pay {
public static void main(String[] args) {
//if else if 조건문
int grade = 100;
if (grade >= 90) {
System.out.println("A");
}
else if(grade >= 80){
System.out.println("B");
}
else if(grade >= 70){
System.out.println("C");
}
else if(grade >= 60){
System.out.println("D");
}
else {
System.out.println("F");
}
}
} |
cs |
세금 납부 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 |
/*
* 세금 계산 프로그램 작성
* 과세표준 금액을 사용자에게 입력 받음 (단위 : 만원)
* 과세기준
* 1000만원 이하 : 9%
* 1000만원 초과 : 18%
* 4000만원 초과 : 27%
* 8000만원 초과 : 36%
* 출력 예시 : 소득세는 0000원 입니다.
*/
package e1_condition;
import java.util.Scanner;
public class p1_if_pay {
public static void main(String[] args) {
int salary;
Scanner input = new Scanner(System.in);
System.out.print("소득을 입력하세요 : ");
salary = input.nextInt();
if (salary<=1000) {
System.out.println("소득세는 "+(salary*0.09));
}
else if(salary>1000&&salary<=4000){
System.out.println("소득세는 "+(salary*0.18));
}
else if(salary>4000&&salary<=8000){
System.out.println("소득세는 "+(salary*0.27));
}
else if(salary>8000){
System.out.println("소득세는 "+(salary*0.36));
}
}
} |
cs |
●선택문(switch case)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 |
package e1_condition;
import java.util.Scanner;
public class e1_condition {
public static void main(String[] args) {
int num;
Scanner input = new Scanner(System.in);
System.out.print("숫자 입력 : ");
num = input.nextInt();
switch (num/*변수*/) {
//switch case 문은 break 가 없다면 1부터 5까지 모두 검사한다.
//break를 써서 검사하고 실행 후 구문을 빠져 나가도록 한다.
case 0://값 0
System.out.println("영");
break;
case 1://값 0
//값이 1일때 수행 될 문장
System.out.println("하나");
break;
case 2://값 0
System.out.println("둘");
//값이 2일때 수행 될 문장
break;
case 3://값 0
System.out.println("셋");
//값이 3일때 수행 될 문장
break;
case 4://값 0
System.out.println("넷");
//값이 4일때 수행 될 문장
break;
case 5://값 0
System.out.println("다섯");
//값이 5일때 수행 될 문장
break;
default:
System.out.println("많음");
break;
}
}
} |
cs |
switch 문을 이용해서 해당 월의 일수를 출력하는 프로그램
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 |
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day=31;
break;
case 4:
case 6:
case 9:
case 11:
day=30;
break;
case 2:
if(((year%4==0)&&(year%100!=0)||(year%400==0))) {
day=29;
}
else {
day=28;
}
break;
default:
System.out.println("잘못 입력함");
break; |
cs |
switch case 문은 break 가 없다면 구문을 계속 탐색한다.
if else if 를 이용한 다른 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 |
public class p3_switch_DayInMonth {
public static void main(String[] args) {
int month;
int year = 2017;
Scanner input = new Scanner(System.in);
System.out.print("일 수를 알고 싶은 달을 입력하세요 : ");
month = input.nextInt();
if((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10)||(month==12)) {
System.out.println("2017년 "+month+"월의 일 수는 31일");
}
else if((month==4)||(month==6)||(month==9)||(month==11)) {
System.out.println("2017년 "+month+"월의 일 수는 30");
}
else if(month==2||((year%4==0)&&(year%100!=0)||(year%400==0))){
System.out.println("2017년 "+month+"월의 일 수는 28");
}
}
} |
cs |
●반복문(while)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 |
package e1_condition;
public class e2_loop {
public static void main(String[] args) {
//while 문
/*
*땀 날때까지 뛰어
*조건이 참인 동안 문장을 반복적으로 수행
*조건은 참, 거짓이 판별될 수 있는 조건식이 와야함
*반복이 끝날 수 있도록 조건식의 값이 바뀌도록 해야함
*필요한 경우가 아니라면 무한루프에 빠지지 않도록 조심
while(덥니?) {
에어컨 틀어
}
*/
int i=0;
while(i<5) {
System.out.println("숫자 : "+i);
}
}
} |
cs |
코드를 실행하면 계속해서 0을 출력합니다.
1
2
3
4
5
6
7
8
9
10
11
12 |
package e1_condition;
public class e2_loop {
public static void main(String[] args) {
int i=0;
while(i<5) {
System.out.println("숫자 : "+i);
i++;
}
}
} |
cs |
무한히 반복되지 않으려면 이렇게 i++;을 추가해주면 됩니다.
구구단 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 |
package e1_condition;
import java.util.Scanner;
public class e2_loop {
public static void main(String[] args) {
int num;
int i=1;
Scanner input = new Scanner(System.in);
System.out.print("출력하고 싶은 단을 입력하시오");
num = input.nextInt();
while(i<10) {
System.out.println(num+"*"+i+"="+num*i);
i++;
}
}
} |
cs |
반복문 while 예제 / 사용자에게 정수 n을 입력 받고 n보다 작고 10으로 나누어 떨어지는 모든 양수
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 |
package Div;
import java.util.Scanner;
public class Div {
public static void main(String[] args) {
int n;
int i=1;
Scanner input=new Scanner(System.in);
System.out.print("숫자 입력 : ");
n=input.nextInt();
while(n>i) {
if((i%10)==0) {
System.out.println(i);
}
i++;
}
}
} |
cs |
사용자로부터 숫자 n을 입력받고 , n보다 작고 10으로 나눠떨어지는 모든 양수를 출력하는 코드입니다.
●반복문(do~while)
1
2
3
4
5
6
7
8
9
10
11 |
package e1_condition;
public class e2_loop {
public static void main(String[] args) {
int k=0;
do {
System.out.println("숫자 : "+k);
k++;
}while(k<3);
}
} |
cs |
do while 문은 조건에 상관 없이 한번은 실행됨
1
2
3
4
5
6
7
8
9
10
11 |
package e1_condition;
public class e2_loop {
public static void main(String[] args) {
int k=4;
do {
System.out.println("숫자 : "+k);
k++;
}while(k<3);
}
} |
cs |
k가 4여서 조건이 맞지 않음에도 한번 실행된다.
숫자 맞추기 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 |
package e1_condition;
import java.util.Scanner;
public class p4_do_while_LetterGame {
public static void main(String[] args) {
int answer = 59;
int num;
int guess=1;
Scanner input = new Scanner(System.in);
System.out.print("숫자 입력 : ");
num = input.nextInt();
do {
if(answer==num) {
System.out.println("정답입니다.");
}
else if(answer<num) {
System.out.println("정답보다 높습니다.");
}
else if(answer>num) {
System.out.println("정답보다 낮습니다.");
}
System.out.print("숫자 입력 : ");
num = input.nextInt();
guess++;
} while (answer!=num);
System.out.println("시도한 횟수"+guess);
}
} |
cs |
Random을 사용해서 코드 바꾸기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 |
package e1_condition;
import java.util.Random;
import java.util.Scanner;
public class p4_do_while_LetterGame {
public static void main(String[] args) {
int answer,num;
Scanner input= new Scanner(System.in);
Random rand = new Random();
answer = rand.nextInt(10)+1;//1을 더하면 1부터 10까지 난수가 생성된다.
//1을 더하지 않으면 0부터 9까지 난수가 생성된다.
int guess=0;
do {
System.out.print("숫자 입력 : ");
num = input.nextInt();
if(answer==num) {
System.out.println("정답입니다.");
}
else if(answer<num) {
System.out.println("정답보다 높습니다.");
}
else if(answer>num) {
System.out.println("정답보다 낮습니다.");
}
guess++;
} while (answer!=num);
System.out.println("시도한 횟수"+guess);
}
} |
cs |
while을 이용한 은행 예제
반복문을 통해 작성한 간단한 은행 프로그램 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 |
package e1_condition;
import java.util.Scanner;
public class Bank {
public static void main(String[] args) {
int select = 0;
int deposit=0;
int input=0;
Scanner money = new Scanner(System.in);
while(select!=4) {
System.out.println("---------------------------");
System.out.println("1.예금 | 2.출금 | 3.잔고 | 4.종료");
System.out.println("---------------------------");
System.out.print("선택>");
select = money.nextInt();
switch (select) {
case 1:
System.out.print("예금 액 : ");
input = money.nextInt();
deposit = deposit+input;
break;
case 2:
System.out.print("출금 액 : ");
input=money.nextInt();
if(deposit < input) {
System.out.println("예금 액이 부족합니다.");
}
else {
deposit = deposit - input;
}
break;
case 3:
System.out.println("잔고 : "+deposit);
break;
default:
break;
}
}
}
}
|
cs |
●반복문(for)
1
2
3
4
5
6
7
8
9
10
11
12
13 |
package e1_condition;
public class e2_loop {
public static void main(String[] args) {
for(int i=0;i<10;i++) {//반복문 for
System.out.println("숫자 : "+i);
}
}
}
|
cs |
반복문의 형식은 다음과 같습니다.
1부터 10까지 더한 값을 출력하는 예제
1
2
3
4
5
6
7
8
9
10
11 |
package For;
public class For {
public static void main(String[] args) {
int sum=0;
for (int i = 1; i < 11; i++) {
sum = sum+i;//합을 저장할 변수 sum에 i를 1부터 10까지 더한다
}
System.out.println(sum);
}
} |
cs |
●반복문 for 중첩
for문을 중첩 사용해서 구구단 출력하기
1
2
3
4
5
6
7
8
9
10
11
12
13 |
package For;
public class For {
public static void main(String[] args) {
for (int i = 2; i < 10; i++) {
System.out.println("***"+i+"단***");
for (int j = 1; j < 10; j++) {
System.out.println(i+" *" +j+" = "+i*j);
}
}
}
} |
cs |
이렇게 반복문을 사용하시면 i가 2일때 j의 값을 1부터 9까지 바꿔가며 반복합니다.
그래서 이런 console화면이 출력됩니다.
'Java 강의' 카테고리의 다른 글
자바 break; continue; (0) | 2017.09.27 |
---|---|
반복문으로 *을 출력하는 예제 (0) | 2017.09.26 |
자바 스트래티지 패턴 Strategy 패턴 (0) | 2017.09.24 |
자바 상속 / java inheritence (0) | 2017.09.23 |
자바 배열 / 객체 배열 선언 / java array / java object array (0) | 2017.09.21 |
댓글