JAVA/이론 정리 및 예제

[JAVA/자바] #3_1 조건문 / 예제

chaewon 2021. 9. 5. 18:13

제어문 (조건문, 반복문, 분기문)

조건문

if

  • 단독 if문
  • 조건식의 결과 값이 참(true)이면 { }안에 있는 코드를 실행하고,
    조건식의 결과 값이 거짓(false)이면 { } 안에 있는 코드를 무시하고 넘어감
// [표현식]
// if (조건식) {
//    조건식이 true일 때 실행할 코드 작성
// }
				Scanner sc = new Scanner(System.in);
                System.out.print("숫자를 한 개 입력하세요 : ");
                int num = sc.nextInt();
                
                //짝수인지 조건을 확인함
                if(num % 2 == 0) {
                        //결과가 참일 때 수행함
                        System.out.println("입력하신 숫자는 짝수입니다.");
                }
                
                //짝수가 아닌지 조건을 확인함 (즉, 홀수인지 확인)
                if(num % 2 != 0) {
                        //결과가 참일 때 수행함
                        System.out.println("입력하신 숫자는 홀수입니다.");
                }
                
                //조건과 상관없이 실행됨
                System.out.println("프로그램 종료");      
        }       
}

 

if - else

  • 둘 중 한 개를 선택하는 조건문으로, 조건이 참인 경우와 거짓인 경우
  • 수행하는 명령을 따로 작성하는 경우에 사용 한다.
  • 조건을 비교하여 두 개의 명령 중 한 개는 무조건 수행을 한다.
// [표현식]
// if (조건식) {
//  조건이 참일 경우 실행할 내용 작성
// } else {        //문법에러조심
//  조건이 거짓일 경우 실행할 내용 작성
// }

// else에는 조건식을 사용하지 못함
// if의 조건식이 거짓이면 무조건 else 블럭의 실행 코드를 수행함
				// 숫자를 하나 입력받아 홀수 짝수 구분하여 출력
                Scanner sc = new Scanner(System.in);

                System.out.print("정수를 하나 입력하세요 : ");
                int num = sc.nextInt();

                String str = "";        //리터럴 타입으로 초기화
                if(num % 2 == 0) {
                        str = "입력하신 정수는 짝수입니다.";
                }else {
                        str = "입력하신 정수는 홀수입니다.";
                }
                System.out.println(str);
                //숫자를 하나 입력 받아 양수인지 음수인지 풀력
                //단, 0이면 "0입니다"라고 출력하세요
                
                System.out.print("정수를 하나 입력하세요 : ");
                int num = sc.nextInt();
                
                String str = "";
                
                if(num != 0) {
                        if(num > 0) {
                                str = "입력하신 숫자는 양수입니다.";
                        }else {
                                str = "입력하신 숫자는 음수입니다.";
                        }
                }else {
                        str = "입력하신 숫자는 0입니다";
                }
                System.out.println(str);
                //정수 두 개를 입력 받아, 두 수의 산술연산을 처리해서 출력하세요
                //단, 두 수 모두 1부터 100 사이의 값이어야 함 
                //둘 중 하나라도 범위에 속하지 않으면
                //"값은 1부터 100사이어야 합니다." 출력되게 함
                
                System.out.print("첫 번째 정수를 입력 : ");
                int num1 = sc.nextInt();
                System.out.print("두 번째 정수를 입력 : ");
                int num2 = sc.nextInt();
                
                int plus, minus, multi, div, mod;
                
                if((num1 >= 1 && num1 <= 100) && (num2 >= 1 && num2 <= 100)) {
                        plus = num1 + num2;
                        minus = num1 - num2;
                        multi = num1 * num2;
                        div = num1 / num2;
                        mod = num1 % num2;
                        
                        System.out.println(num1 + " + " + num2 + " = " + plus);
                        System.out.println(num1 + " - " + num2 + " = " + minus);
                        System.out.println(num1 + " * " + num2 + " = " + multi);
                        System.out.println(num1 + " / " + num2 + " = " + div);
                        System.out.println(num1 + " % " + num2 + " = " + mod);
                        
                }else {
                        System.out.println("두 수 모두 1부터 100 사이의 값이어야 합니다");
                }

 

if - else if

  • if else if 구문은 다중 조건을 줄 수 있는 문법이다.
// [표현식]
// if (조건식) {
//        첫 번째 조건식이 참 인 경우 동작할 내용
// } else if (조건식) {
//        두 번쨰 조건식이 참 인 경우 동작할 내용
// } else {
//        모든 조건이 거짓인 경우 동작할 내욜
// }
                //정수를 하나 입력 받아 등급을 나누어 점수와 등급을 출력하세요
                //등급은, 90점 이상은 A등급
                //90점 미만 80점 이상은 B등급
                //80점 미만 70점 이상은 C등급
                //70점 미만 60점 이상은 D등급
                //60점 미만은 F등급으로 나눈다.
                //등급에 "+"라는 문자를 추가하여 출력하세요
                //예) 95점 이상은 등급이 A+로 출력되게 함

                Scanner sc = new Scanner(System.in);
                
                System.out.print("점수를 입력하세요 : ");
                int point = sc.nextInt();
                char grade = ' ';                //char는 공백으로 초기화
                
                if(point >= 90) {
                        grade = 'A';
                        if(point >= 95) {
                                grade += "+";        
                        }
                }else if(/*point < 90 &&*/ point >= 80) {
                        grade = 'B';
                        if(point >= 85) {
                                grade += "+";
                        }
                }else if(/*point < 80 &&*/ point >= 70) {
                        grade = 'C';
                        if(point >= 75) {
                                grade += "+";
                        }
                }else if(/*point < 70 &&*/ point >= 60) {
                        grade = 'D';
                        if(point >= 65) {
                                grade += "+";
                        }
                }else {
                        grade = 'F';
                }
                System.out.printf("당신의 점수는 %d점이고, 등급은  %c입니다.\n", point, grade);        //포맷형태 %d

 

  • 포맷문자
    • %d : 정수형 *
    • %f : 실수(소수점 아래 6자리) *
    • %c : 문자 *
    • %s : 문자열 *
    • %b : 논리형 *
    • %.2f : 소수점 아래 2자리 까지만 표시 *
  • 특수문자(escape 문자)
    • tap : \t                      정해진 공간만큼 띄어쓰기
    • new line : \n               출력하고 다음 라인으로 옮김 *
    • 역슬래쉬 : \\              특수문자(\) 사용 *
    • 작은따옴표 : \'            특수문자(') 사용 *
    • 큰따옴표 : \"               특수문자(") 사용 *
    • 유니코드 : \u0001        유니코드 표시할 때 사용

 

switch

  • 변수의 값을 case에서 찾아 명령을 수행하는 조건문이다.
  • 해당하는 값이 없을 경우에는 default의 명령문을 수행한다.
  • case와 명령문 사이에는 콜론(:)을 써야한다.
  • break가 없으면 멈추지 않고 계속 수행한다.
// [표현법]
// switch (변수) { //정수, 실수, 문자, 문자열
//        case 1: 실행문1; break;                //변수 값이 1일 경우 실행
//        case 2: 실행문2; break;                //변수 값이 2일 경우 실행
//        case 3: 실행문3; return;                //변수 값이 case문에 없을 경우 실행        return : 속해 있는 method()를 빠져나감
// }
                //정수 두 개와 연산기호 1개를 입력받아서
                //연산기호 문자에 해당하는 계산을 수행하고 출력하세요
                Scanner sc = new Scanner(System.in);
                
                System.out.print("첫 번째 값 : ");
                int first = sc.nextInt();
                System.out.print("두 번째 값 : ");
                int second = sc.nextInt();
                System.out.print("연산자(+,-,*,/) : ");
                char op = sc.next().charAt(0);
                
                int result = 0;
                
                switch(op) {
                        case '+': result = first + second; break;
                        case '-': result = first - second; break;
                        case '*': result = first * second; break;
                        case '/': result = first / second; break;
                }
                
                System.out.println(first + " " + op + " " + second + " = " + result);
                //1월~ 12월까지를 정수로 입력받아
                //해당하는 달이 몇일 까지인지 출력하세요
                Scanner sc = new Scanner(System.in);
                System.out.print("1월 ~ 12월 까지 중 하나를 입력하세요 : ");
                int num = sc.nextInt();
                
                switch(num) {
                        case 1 : case 3 : case 5 : case 7 : case 8 : case 10 :
                        case 12 : System.out.println("입력하신 월은 31일 까지입니다."); break;
                                
                        case 4 : case 6 : case 9 : case 11 : System.out.println("입력하신 월은 30일 까지입니다."); break;
                                
                        case 2: System.out.println("입력하신 월은 28일 혹은 29일 까지입니다."); break;
                        default : System.out.println("반드시 1월 ~ 12월 까지를 입력해야 합니다."); return;
                
                }