프로그램의 흐름을 제어하는 명령문
원래는 main()메서드의 시작 중괄호부터 끝 중괄호 안에 있는 명령문을 위에서 아래로 순차적으로 실행하는 구조를 가지고 있음
제어문은 이러한 흐름을 개발자가 원하는 방향으로 바꿀 수 있도록 해 주는 것을 말함
모든 제어문의 실행 결과는 boolean형(true / false)로 나옴
1. 분기문(조건문)
2. 반복문
3. 기타
형식)
if(조건식){
조건식이 참인 경우 실행 문장;
}
<예제>
public class IfExam_01 {
public static void main(String[] args) {
System.out.println("프로그램 시작");
int su = 53;
if(su >= 50) {
System.out.println("조건식이 참입니다.");
System.out.println("50이상의 숫자입니다.");
}
System.out.println("프로그램 종료");
}
}
import java.util.Scanner;
public class IfExam_02 {
public static void main(String[] args) {
System.out.println("프로그램 시작");
//1. 키보드로 정수를 입력 받아서 변수에 저장
Scanner sc = new Scanner(System.in);
System.out.print("점수를 입력하세요 : ");
int score = sc.nextInt();
//2. 조건식을 통해서 원하는 결과를 화면에 출력
if(score >= 90) {
System.out.println("점수가 90점 이상입니다.");
System.out.println("A학점입니다.");
}
System.out.println("프로그램 종료");
sc.close();
}
}
[문제1] 키보드로 정수 하나를 입력 받아서 입력 받은 정수가 5의 배수이면 "이 정수는 5의 배수입니다."라는 메시지를 화면에 출력해 보세요
import java.util.Scanner;
public class IfExam_03 {
public static void main(String[] args) {
// 1. 키보드로부터 정수 하나를 입력 받자
Scanner sc = new Scanner(System.in);
System.out.print("정수를 입력 : ");
int num = sc.nextInt();
// 2. 조건식을 이용하여 5의 배수인지 판별을 하자
if (num %5 == 0) {
// 3. 5의 배수이면 콘솔에 출력을 하자
System.out.println(num+"은(는) 5의 배수입니다.");
}
sc.close();
}
}
[문제2] 키보드로 입력 받은 정수 값이 음수이면 "입력 받은 정수는 음수입니다."라는 메시지를 화면에 출력
import java.util.Scanner;
public class IfExam_04 {
public static void main(String[] args) {
// 1. 키보드로부터 정수 하나를 입력을 받자
Scanner sc = new Scanner(System.in);
System.out.print("점수 입력 : ");
int num = sc.nextInt();
// 2. 입력 받은 정수가 양수인지 음수인지 판별을 하자
if(num < 0) {
// 3. 입력받은 정수가 음수이면 메세지를 화면에 출력을 하자
System.out.println( "입력 받은 " + num +"은(는) 음수입니다.");
}
sc.close();
}
}
[문제3] 키보드로부터 입력 받은 점수가 60점 이상이면 "합격입니다." 라는 메시지를 화면에 출력
import java.util.Scanner;
public class IfExam_05 {
// 1. 키보드로부터 점수를 입력을 받자
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("점수 입력 : ");
int score = sc.nextInt();
// 2. 입력 받은 점수가 60점 이상인지 판별을 하자
if(score >= 60) {
// 3. 점수가 60점 이상이면 메세지를 화면에 출력을 하자
System.out.println(score+"은(는) 합격입니다.");
}
sc.close();
}
}
형식 )
if(조건식){
조건식이 참인 경우 실행 문장;
} else {
조건식이 거짓인 경우 실행 문장;
}
<예제>
import java.util.Scanner;
public class IfElseExam_06 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("정수 하나를 입력하세요 : ");
int su = sc.nextInt();
if(su >= 50) {
System.out.println("입력 받은 " + su + "은(는) 50이상의 수 입니다.");
}else {
System.out.println("입력 받은 " + su + "은(는) 50이하의 수 입니다.");
}
sc.close();
}
}
[문제1] 키보드로부터 점수를 입력받아서 입력 받은 점수가 60점 이상이면 "합격입니다" 라는 메세지를 화면에 출력하고, 60점 미만이면 "불합격입니다" 라는 메세지를 화면에 출력
import java.util.Scanner;
public class IfElseExam_07 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("점수 입력 : ");
int score = sc.nextInt();
if(score>=60) {
System.out.println("합격입니다.");
} else {
System.out.println("불합격입니다.");
}
sc.close();
}
}
[문제2] 키보드로부터 입력 받은 정수가 홀수인지 아니면 짝수인지 판별하여 화면에 메세지를 출력
import java.util.Scanner;
public class IfElseExam_08 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("정수 입력 : ");
int su = sc.nextInt();
if(su%2==0) {
// 참인 경우 ==> 짝수인 경우
System.out.println(su+"은(는)짝수입니다.");
}else {
// 거짓인 경우 ==> 짝홀수인 경우
System.out.println(su+"은(는)홀수입니다.");
}
sc.close();
}
}
[문제3] 키보드로부터 입력 받은 정수가 5의 배수이면 "이 정수는 5의 배수입니다." 라는 메세지를 화면에 출력하고, 5의 배수가 아니면 "이 정수는 5의 배수가 아닙니다."라는 메세지를 화면에 출력 단, 입력 받은 정수가 음수인 경우에는 "음수가 입력되었습니다."라는 메세지를 화면에 출력
import java.util.Scanner;
public class IfElseExam_09 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("정수 입력 : ");
int su = sc.nextInt();
if(su > 0) {
// 조건이 참인 경우 == > 양수인 경우
if(su%5==0) {
// 참인 경우 ==> 5의 배수인 경우
System.out.println(su+"은(는) 5의 배수입니다.");
}else {
// 거짓인 경우 ==> 5의 배수가 아닌 경우
System.out.println(su+"은(는) 5의 배수가 아닙니다.");
}
}else{
//조건이 거짓인 경우 == > 음수이거나 0인 경우
if(su == 0) {
// 참인 경우 ==> 0인 경우
System.out.println("0입니다.");
}else {
// 거짓인 경우 ==> 음수인 경우
System.out.println("음수가 입력되었습니다.");
}
}
sc.close();
}
}
형식)
if(조건식1){
조건식1이 참인 경우 실행 문장;
}else {
if(조건식2){
조건식1이 거짓이고, 조건식2가 참인 경우 실행 문장
} else{
if(조건식3){
조건식2가 거짓이고, 조건식3이 참인 경우 실행 문장
}else {
조건식1, 조건식2, 조건식3이 모두 거짓인 경우 실행 문장;
}
}
}
==>
if(조건식1){
조건식1이 참인 경우 실행 문장;
}else if(조건식2){
조건식1이 거짓이고, 조건식2가 참인 경우 실행 문장
}else if(조건식3){
조건식1, 조건식2가 거짓이고, 조건식3이 참인 경우 실행 문장
}else {
조건식1, 조건식2, 조건식3이 모두 거짓인 경우 실행 문장;
}
<예제>
import java.util.Scanner;
public class IfElseIfExam_10 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("1 ~ 3 사이의 숫자 중에서 하나를 입력하세요 : ");
int num = sc.nextInt();
if(num == 1) {
System.out.println("입력 받은 숫자는 1입니다.");
}else if(num == 2) {
System.out.println("입력 받은 숫자는 2입니다.");
}else if(num == 3) {
System.out.println("입력 받은 숫자는 3입니다.");
}else {
System.out.println("1 ~ 3 이외의 숫자가 입력되었습니다.");
}
sc.close();
}
}
[문제1 ] 이름과 국어점수, 영어점수, 자바점수를 키보드로 입력을 받아서 아래와 같이 성적을 화면에 출력해 보세요
학점 기준 :
A학점(90점 이상)
B학점(80 ~ 89점)
C학점(70 ~ 79점)
D학점(60 ~ 69점)
F학점(59점 이하)
이 름 : O O O
국어점수 : OO 점
수학점수 : OO 점
자바점수 : OO 점
총 점 : OOO 점
평 균 : OO.OO 점
학 점 : O 학점
1.
import java.util.Scanner;
public class IfElseIfExam_11 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("이름 : ");
String name = sc.next();
System.out.print("국어점수 : ");
int k = sc.nextInt();
System.out.print("수학점수 : ");
int m = sc.nextInt();
System.out.print("자바점수 : ");
int j = sc.nextInt();
int sum = k+m+j;
double avg = (k+m+j)/3.0; // 더블이기 때문에 3.0
//float avg = sum/3.0f; -- float 사용할 경우
System.out.printf("총 점 : %d\n",sum);
System.out.printf("평 균 : %.2f\n",avg);
if(avg>=90) {
System.out.println("학 점 : A학점");
}else if(avg>=80) {
System.out.println("학 점 : B학점");
}else if(avg>=70) {
System.out.println("학 점 : C학점");
}else if(avg>=60) {
System.out.println("학 점 : D학점");
}else {
System.out.println("학 점 : F학점");
}
sc.close();
}
}
2.
public class IfElseIfExam_11 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("이름 : ");
String name = sc.next();
System.out.print("국어점수 : ");
int k = sc.nextInt();
System.out.print("수학점수 : ");
int m = sc.nextInt();
System.out.print("자바점수 : ");
int j = sc.nextInt();
int sum = k+m+j;
double avg = (k+m+j)/3.0; // 더블이기 때문에 3.0
//float avg = sum/3.0f; -- float 사용할 경우
if(avg>=90) {
grade="A학점";
}else if(avg>=80) {
grade="B학점";
}else if(avg>=70) {
grade="C학점";
}else if(avg>=60) {
grade="D학점";
}else {
grade="F학점";
}
System.out.println("이 름 : " + name);
System.out.println("국어점수 : " + k + "점");
System.out.println("수학점수 : " + m + "점");
System.out.println("자바점수 : " + j + "점");
System.out.printf("총 점 : %d\n",sum);
System.out.printf("평 균 : %.2f\n",avg);
System.out.println("학 점 : " + grade + "학점");
sc.close();
}
}
형식 )
switch (식 또는 값 또는 변수){
case 값1 :
값1 일 때 실행문;
break; // switch ~ case 블럭 탈출
case 값2 :
값2 일 때 실행문;
break; // switch ~ case 블럭 탈출
case 값3 :
값3 일 때 실행문;
break; // switch ~ case 블럭 탈출
default :
값1 ~ 값3 이외의 값이 들어온 경우 실행문;
// default 문장은 생략도 가능함
- 정수 받기
import java.util.Scanner;
public class SwitchCaseExam_12 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("1 ~ 3 사이의 숫자 중에서 하나를 입력하세요 : ");
int num = sc.nextInt();
switch(num) {
case 1:
System.out.println("입력 받은 숫자는 1입니다.");
break;
case 2:
System.out.println("입력 받은 숫자는 2입니다.");
break;
case 3:
System.out.println("입력 받은 숫자는 3입니다.");
break;
default :
System.out.println("1 ~ 3 이외의 숫자가 입력되었습니다.");
}
sc.close();
}
}
import java.util.Scanner;
public class SwitchCaseExam_13 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("정수 하나를 입력하세요 : ");
int su = sc.nextInt();
switch(su % 5) { // 입력받은 수를 5로 나눈 나머지
case 0:
System.out.println("입력 받은 "+su+" 은(는) 5의 배수입니다.");
break;
case 1:
System.out.println("입력 받은 "+su+" 은(는) 5의 배수가 아닙니다. 나머지가 1입니다.");
break;
case 2:
System.out.println("입력 받은 "+su+" 은(는) 5의 배수가 아닙니다. 나머지가 2입니다.");
break;
case 3:
System.out.println("입력 받은 "+su+" 은(는) 5의 배수가 아닙니다. 나머지가 3입니다.");
break;
case 4:
System.out.println("입력 받은 "+su+" 은(는) 5의 배수가 아닙니다. 나머지가 4입니다.");
}
sc.close();
}
}
-문자열 받기
- char 형 -> String형도 사용 가능
import java.util.Scanner;
public class SwitchCaseExam_14 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("알파벳 a ~ c 사이의 단어 중에서 한 글자 입력 : "); // 단일문자
char fruit = sc.next().charAt(0);
// char로 문자열을 받아서 문자열의 한 글자를 빼온다 .charAt()
switch(fruit) {
case 'a': // 단일문자 ' '
System.out.println("선택한 과일은 apple 입니다.");
break;
case 'b':
System.out.println("선택한 과일은 banana 입니다.");
break;
case 'c':
System.out.println("선택한 과일은 cherry 입니다.");
break;
default :
System.out.println("선택한 과일이 없습니다.");
}
sc.close();
}
}
문자 받기
- String형
import java.util.Scanner;
public class SwitchCaseExam_15 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("직급(사장/전무/부장/차장/과장/대리/사원) 중 하나의 직급을 선택하세요 : ");
// 문자
String position = sc.next();
switch(position) {
case "사장":
System.out.println("사장의 월급은 1000 만원입니다.");
break;
case "전무":
System.out.println("전무의 월급은 800 만원입니다.");
break;
case "부장":
System.out.println("부장의 월급은 600 만원입니다.");
break;
case "차장":
System.out.println("차장의 월급은 500 만원입니다.");
break;
case "과장":
System.out.println("과장의 월급은 400 만원입니다.");
break;
case "대리":
System.out.println("대리의 월급은 300 만원입니다.");
break;
case "사원":
System.out.println("사원의 월급은 200 만원입니다.");
break;
}
sc.close();
}
}
--> 다중 if ~ else 문으로 처리를 해 보자
import java.util.Scanner;
public class SwitchCaseExam_15 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("직급(사장/전무/부장/차장/과장/대리/사원) 중 하나의 직급을 선택하세요 : ");
// 문자
String position = sc.next();
// 문자열에는 == 기호로는 같다고 표시할 수 없음
if(position.equals("사장")) { // 문자끼리 비교할 때는 .equals() 사용
System.out.println("사장의 월급은 1000 만원입니다.");
} else if (position.equals("전무")) {
System.out.println("전무의 월급은 800 만원입니다.");
} else if (position.equals("부장")) {
System.out.println("부장의 월급은 600 만원입니다.");
}else if (position.equals("차장")) {
System.out.println("부장의 월급은 600 만원입니다.");
}else if (position.equals("과장")) {
System.out.println("과장의 월급은 400 만원입니다.");
}else if (position.equals("대리")) {
System.out.println("대리의 월급은 300 만원입니다.");
}else if (position.equals("사원")) {
System.out.println("사원의 월급은 200 만원입니다.");
}
sc.close();
}
}