STUDY/languages

[자바] 조건문 개념정리, 문제 모음

이앤지 2021. 11. 17. 20:08

< if >

if 반복문 개념 if - else if

더보기

package day0908;
/*if - else if 구조
 * if - else if 구조에서는
 * if의 조건식이 false가 나오면
 * 그 다음 else if 조건식을 체크하는 식으로 하는 구조로써
 * 최종적으로 여러 조건을 체크할 수 있게 되는 구조이다.
 * if - else 때와 ㅏㅁ찬가지로,
 * 오직 한개의 코드블락만이 실행 된다.
 * 
 * if - else if 구조
 * if(조건식1) {
 *      조건식1이 true일 떄 실행할 코드 블락
 * } else if(조건식2) {
 *      조건식2가 true일 때 식핼할 코드 블락
 * } else if ....
 * 
 * } else {
 *      위 조건식이 모두 false일때 실행할 코드 블락
 */


public class Ex07IfElseIf {
    public static void main(String[] args) {
        int num = 3;
        
        if(num>0) {
            System.out.println("자연수입니다.");
        } else if(num<0) {
            System.out.println("음의 정수입니다.");
        } else {
            System.out.println("0 입니다.");
        }
    }
}

++ 검증

더보기
package day0908;
/*검증(Validation)
 * 검증이란, 입력된 값을 처리하기 전에
 * 해당 값이 올바른 값인지 확인하는 과정을 검증이라고 한다.
 * 
 * 검증은 다양한 방법으로 할 수 있는데
 * 우리는 여기서 2가지 방법의 검증을 알아볼 것이다.
 */

import java.util.Scanner;

public class Ex12Validation {
    public static void main(String[] args) {
        
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("점수를 입력해주세요.");
        System.out.println("> ");
        int score = scanner.nextInt();
        
        System.out.println("값 검증이 안됬을 경우");
        //점수 입력이 28890점, -435점 같은 터무니 없는 값일 경우가 값 검증이 안된경우임.
        if(score >= 90) {
            System.out.println("A");
        } else if(score >= 80) {
            System.out.println("B");
        } else if(score >= 70) {
            System.out.println("C");
        } else if(score >= 60) {
            System.out.println("D");
        } else {
            System.out.println("F");
        }
        
        System.out.println("------------------\n");
        
        
        System.out.println("검증 1번. 정확한 조건식 사용");
        /* 정확한 조건식이란?
         * 헤당 코드 블락이 실행되는 정확한 if조건식을 만들어서
         * 그 경우에만 코드 블락이 실행되기 if - else if를 만들어 주는 것을 뜻한다.
         * 
         * 정확한 조건식의 경우, 올바른 값의 범위가 연속적이지 않을 때
         * 사용하면 좋다.
         */
        if(score >= 90 && score <= 100) {
            System.out.println("A");
        } else if(score >= 80 && score <= 89) {
            System.out.println("B");
        } else if(score >= 70 && score <= 79) {
            System.out.println("C");
        } else if(score >= 60 && score <= 69) {
            System.out.println("D");
        } else if(score >= 0 && score <= 59) {
            System.out.println("F");
        } else {
            System.out.println("잘못 입력하셨습니다.");
        }
        
        
        System.out.println("------------------\n");
        
        
        System.out.println("검증 2번. 값이 올바른 범위에 속하는지 먼저 체크하기");
        /* 만약 올바른 값이 범위의 형태라면
         * 먼저 값이 올바른 범위에 속하는지 체크하고
         * 만약 올바르다면 추가적으로 코드를 실행시킨다.
         * 만약 올바르지 않다면 경고 메시지만 출력해준다.
         */
        if(score >= 0 && score <= 180) {
            //사용자가 입력한 점수가 올바른 점수이므로(=0이상 100이하의 정수)
            //if-else if 구조를 사용하여 A, B, C, D, F를 출력해준다.
            //이때에는 잘못된 점수(100초과, 0미만인 경우)는
            //이 if 코드 블락 안에 접근 할 수 없으므로
            //조건식을 간단하게 써도 된다.
            
            if(score >= 90) {
                System.out.println("A");
            } else if(score >= 80) {
                System.out.println("B");
            } else if(score >= 70) {
                System.out.println("C");
            } else if(score >= 60) {
                System.out.println("D");
            } else {
                System.out.println("F");
            }
            
        } else {
            //사용자가 입력한 점수가 올바르지 않은 경우이므로
            //경고메시지만 출력
            System.out.println("점수는 0미만이거나 100을 초과할 수 없습니다.");
        }
        
        
        
        scanner.close();
        
        
        
    }

}

 

1. 문제

/*퀴즈 + else 까지 생각해서 작성
 * 1. int 변수 num을 만들고 4로 초기화해서
 * 만약 num이 5보다 작으면
 * "5보다 작습니다"가 출력되게 코드를 작성하시오
 * 2. 변수 num에 8로 초기화하고
 * 만약 num이 짝수이면
 * "짝수입니다."가 출력되게 코드를 작성하시오
 * 3. 사용자로부터 숫자를 입력받아서
 * 해당 숫자가 6의 배수이면,
 * "6의 배수 입니다"가 출력되게 코드를 작성하시오
 * 4. 사용자로부터 나이를 입력받아서
 * 미성년자일시, "미성년자입니다"가 출력되게 코드를 작성하시오
 * 5. 사용자로부터 숫자를 입력받아서
 * 50이상 60미만일 경우
 * "50번대 숫자입니다"가 출력되게 코드를 작성하시오
 * 6. 사용자로부터 아이디와 비밀번호를 입력받아서
 * 아이디가 "admin"이고 비밀번호가 "111"이면
 * "로그인 성공"이 출력되게 코드를 작성하시오.
 * 단, 아이디는 대소문자 구분을 하지 않습니다.
 * 
 * 제한시간 20분
 */

1. 답

더보기
package day0908;

import java.util.Scanner;

public class Ex05IfElse2 {
    public static void main(String[] args) {
        
        
       //내가 한거 = 선생님이 한거 
        Scanner scanner = new Scanner(System.in);
        System.out.println("--------1번--------");
        int num = 4;
        if(num<5) {
            System.out.println("5보다 작습니다.");
        } else {
            System.out.println("5보다 크거나 같습니다.");
        }
        System.out.println("------------------");
        

        System.out.println("--------2번--------");
        num = 8;
        if(num %2 == 0) {
            System.out.println("짝수입니다.");
        } else {
            System.out.println("홀수입니다.");
        }
        System.out.println("------------------");
        
        
        System.out.println("--------3번--------");
        System.out.println("숫자를 입력해주세요.");
        System.out.print("> ");
        num = scanner.nextInt();
        if(num % 6 == 0) {
            System.out.println("6의 배수입니다.");
        } else {
            System.out.println("6의 배수가 아닙니다.");
        }
        System.out.println("------------------");
        
        
        System.out.println("--------4번--------");
        System.out.println("나이를 입력해주세요.");
        System.out.print("> ");
        int age = scanner.nextInt();
        if(age < 19) {
            System.out.println("미성년자입니다.");
        } else {
            System.out.println("미성년자가 아닙니다.");
        }
        System.out.println("------------------");
        
        
        System.out.println("--------5번--------");
        System.out.println("숫자를 입력해주세요.");
        System.out.print("> ");
        num = scanner.nextInt();
        if(age >= 50 && num < 60) {
            System.out.println("50번대 숫자입니다.");
        } else {
            System.out.println("50번대 숫자가 아닙니다.");
        }
        System.out.println("------------------");
        
        
        System.out.println("--------6번--------");
        scanner.nextLine();
        
        System.out.println("아이디를 입력해주세요.");
        System.out.print("> ");
        String username = scanner.nextLine();
        
        System.out.println("비밀번호를 입력해주세요.");
        System.out.print("> ");
        String password = scanner.nextLine();
        
        if(username.equalsIgnoreCase("admin") && password.equalsIgnoreCase("111")) {
            System.out.println("로그인 성공");
        } else {
            System.out.println("로그인 실패");
        }
        System.out.println("------------------");
        
        scanner.close();
        
        
    }
}

 

2. 문제

/*퀴즈
 * 이름 국어 영어 수학 순으로 입력받아서
 * 만약 총점이 210점 미만이거나
 * 한 과목이라도 60점 미만일 때에는
 * "###학생은 불합격 입니다."라고 출력되고
 * 그외는 "###학생은 합격입니다."라고 출력되는
 * 프로그램을 작성하시오
 * 
 * 제한시간 10분
 */

2. 답

더보기
package day0908;

import java.util.Scanner;

public class Ex06IfElse3 {
    public static void main(String[] args) {

        //내가 한거
//        Scanner sc = new Scanner(System.in);
//        
//        final int CLASSNUMBER = 3;
//        
//        System.out.println("이름을 입력해주세요.");
//        System.out.print("> ");
//        sc.nextLine();
//        String name = sc.nextLine();
//        
//        System.out.println("국어 영어 수학 점수를 각각 입력해주세요.");
//        System.out.println("국어> ");
//        int kor = sc.nextInt();
//        System.out.println("영어> ");
//        int eng = sc.nextInt();
//        System.out.println("수학> ");
//        int math = sc.nextInt();
//       
//        int total = kor+eng+math;
//        double avg = (double)total / CLASSNUMBER;
//        
//        if(total<210 || kor<60 || eng<60 || math<60 ) {
//            System.out.println("[%s]학생은 불합격입니다."+ name);
//        } else {
//            System.out.println("[%s]학생은 합격입니다."+ name);
//        }
//        
//       sc.close();
//
        
        
        //쌤이 한거
        Scanner scanner = new Scanner(System.in);
        
        //총점 기준
        final int SUM_STANDARD = 210;
        //과목별 기준
        final int SUBJECT_STANDARD = 60;
        
        System.out.println("이름을 입력해주세요.");
        System.out.print("> ");
        scanner.nextLine();
        String name = scanner.nextLine();
        
        System.out.println("국어점수를 입력해주세요 ");
        System.out.print("> ");
        int korean = scanner.nextInt();
        
        System.out.println("영어점수를 입력해주세요 ");
        System.out.print("> ");
        int english = scanner.nextInt();
        
        System.out.println("수학점수를 입력해주세요 ");
        System.out.print("> ");
        int math = scanner.nextInt();
        
        //총점계산
        int sum = korean + english + math;
        
        if( sum < SUM_STANDARD || korean<SUBJECT_STANDARD || english<SUBJECT_STANDARD || math<SUBJECT_STANDARD) {
            System.out.println(name+"학생은 탈락입니다.");
        } else {
            System.out.println(name+"학생은 합격입니다.");
        }
        

        scanner.close();
        
    }

}

 

3. 문제

/* 사용자로부터 점수를 입력받아서
 * 90~: A
 * 80~: B
 * 70~: C
 * 60~: D
 * 그외: F
 * 가 출력되는 프로그램을 작성하시오
 * 
 * 제한시간 10분
 */

3. 답

더보기
package day0908;
/* 사용자로부터 점수를 입력받아서
 * 90~: A
 * 80~: B
 * 70~: C
 * 60~: D
 * 그외: F
 * 가 출력되는 프로그램을 작성하시오
 * 
 * 제한시간 10분
 */

import java.util.Scanner;

public class Ex08LetterGrade {
    public static void main(String[] args) {
        
//        //내가 한거
//        Scanner sc = new Scanner(System.in);
//        
//        System.out.println("점수를 입력하세요");
//        System.out.print("> ");
//        int score = sc.nextInt();
//        
//        if(score>=90) {
//            System.out.println("A");
//        } else if (score>=80) {
//            System.out.println("B");
//        } else if (score>=70) {
//            System.out.println("C");
//        } else if (score>=60) {
//            System.out.println("D");
//        } else
//            System.out.println("F");
//        
//        sc.close();
        
        Scanner scanner = new Scanner(System.in);
        
        //점수입력
        System.out.println("점수를 입력해주세요.");
        System.out.println("> ");
        int score = scanner.nextInt();
        
        if(score >= 90) {
            System.out.println("A");
        } else if(score >= 80) {
            System.out.println("B");
        } else if(score >= 70) {
            System.out.println("C");
        } else if(score >= 60) {
            System.out.println("D");
        } else {
            System.out.println("F");
        }
        
        scanner.close();
        
        
        
    }

}

 

4. 문제

/*퀴즈
 * 사용자로부터 정보를 입력 받아서
 * 다음과 같은 형식으로 비만도를 출력하는 프로그램을 작성하시오
 * 
 * 결과)
 * 이름: [###] 키: #.##M 몸무게: ##.##kg
 * BMI: ##.### 비만도: ###
 * 
 * 단, BMI 공식은
 * 몸무게 / 키(미터단위) / 키(미터단위) 입니다.
 * 
 * 비만도는
 * ~18.5: 저체중
 * ~23: 정상체중
 * ~25: 과체중
 * 그외: 비만
 * 으로 분류됩니다.
 * 
 * 제한시간 20분
 */

4. 답

더보기
package day0908;

import java.util.Scanner;

public class Ex09BmiChecker {
    public static void main(String[] args) {
        
 //        //내가 한거.. 미션실패,, -,-;;       
 //       Scanner sc = new Scanner(System.in);        
//        System.out.println("이름을 입력해주세요");
//        System.out.print("> ");
//        sc.nextLine();
//        String name = sc.nextLine();
//        
//        System.out.println("키 미터단위로 입력해주세요");
//        System.out.print("> ");
//        double height = sc.nextDouble();
//        
//        System.out.println("몸무게를 입력해주세요");
//        System.out.print("> ");
//        double weight = sc.nextDouble();
//        
//        double BMI_height = height/100;
//        double BMI = weight / BMI_height / BMI_height;
//        
//        if (BMI<=18.5) {
//            System.out.println("저체중");
//        } else if(BMI>23 && BMI<18.5) {
//            System.out.println("정상체중");
//        } else if(BMI>23 && BMI<25) {
//            System.out.println("정상체중");
//        } else {
//            System.out.println("비만");
//        }
//        
//        System.out.println("이름: "+name+ "키: "+BMI_height+"M 몸무게: "+weight+"kg");
//        System.out.println("BMI: [%0d.00]");
//      
//        sc.close();
        
        //쌤이 한거
        //비만도를 상수로 정하고
        //이름->키->몸무게 입력받고, BMI값 계산, 비만도 값 결정, 결과 출력 순으로 진행
        Scanner scanner = new Scanner(System.in);
        
        //상수
        final double BMI_STANDARD1 = 18.5;
        final double BMI_STANDARD2 = 23;
        final double BMI_STANDARD3 = 25;
       
        System.out.println("이름을 입력해주세요");
        System.out.print("> ");
        String name = scanner.nextLine();
        
        System.out.println("키를 미터 단위로 입력해주세요");
        System.out.print("> ");
        double height = scanner.nextDouble();
        
        System.out.println("몸무게를 킬로그램 단위로 입력해주세요");
        System.out.print("> ");
        double weight = scanner.nextDouble();
        
        double bmi = weight / height / height;
        
        //비만도값 결정
//        if(bmi < BMI_STANDARD1) {
//            String result= "저체중";
//        } else if(bmi < BMI_STANDARD2) {
//            String result = "정상체중";
//        } else if(bmi < BMI_STANDARD3) {
//            String result = "과체중";
//        } else {
//            String result = "비만";
//        }
        // 위는 잘못된거 result의 코드블락이 한정적이기 때문에
        // 비만도 값을 저장할 Strng 클래스 변수 '선언' 해줘야 됨
        String result;
        
        if(bmi < BMI_STANDARD1) {
            result= "저체중";
        } else if(bmi < BMI_STANDARD2) {
            result = "정상체중";
        } else if(bmi < BMI_STANDARD3) {
            result = "과체중";
        } else {
            result = "비만";
        }
        
        //결과 출력
        System.out.printf("이름: [%s] 키: %.2f M 몸무게: %.2f kg\n", name, height, weight);
        System.out.printf("BMI: %.3f 비만도: %s\n", bmi, result);
        
        
        scanner.close();
        
    }

}

 

5. 문제

/* 사용자로부터 성별, 나이, 신체등급을 입력받아
 * 현역, 공익, 면제를 출력하는 프로그램을 작성하시오
 * 
 * 제한 시간 20분
 * 
 * 단. 사용자가 여성일 경우, 추가적인 입력 없이
 * "여성에게는 국방의 의무가 부여되지 않습니다"만 출력되게 코드를 작성하시오.
 * 
 * 단, 사용자가 남성이지만 미성년자일 경우
 * "아직 미성년자에게는 신체등급이 부여되지 않습니다."만 출력되게 코드를 작성하시오.
 * 
 * 성별의 경우, 입력 시에 int로 입력을 받아 1이면 남자 2면 여자로 판정합니다.
 * 현역: 1~3
 * 공익: 4
 * 면제: 그외  
 */

5. 답

더보기
package day0908;

import java.util.Scanner;

public class Ex11Army {
    public static void main(String[] args) {
        
        //내가 한거
//        Scanner sc = new Scanner(System.in);
//        
//        System.out.println("성별을 입력해주세요(남자는 1, 여자는 2)");
//        System.out.print("> ");
//        int sex = sc.nextInt();       
//        
//        if (sex==1) {
//            
//            System.out.println("나이를 입력해주세요");
//            System.out.print("> ");
//            int age = sc.nextInt();
//            
//            System.out.println("신체등급을 입력해주세요");
//            System.out.print("> ");
//            int grade = sc.nextInt();    
//            
//            if(age<19) {
//                System.out.println("아직 미성년자에게는 신체등급이 부여되지 않습니다.");
//            } else if(grade>0 && grade<4){
//                System.out.println("현역");
//            } else if(grade==4) {
//                System.out.println("공익");
//            } else {
//                System.out.println("면제");
//            }
//               
//        } else
//            System.out.println("여성에게는 국방의 의무가 부여되지 않습니다.");
//
//      sc.close();
//        
  
        
        //쌤이 한거
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("성별을 입력해주세요.(1: 남자 2: 여자)");
        System.out.print("> ");
        int gender = scanner.nextInt();
        
        if(gender == 1) {
            //남자이므로 나이를 입력 받는다.
            System.out.println("나이를 입력해주세요.");
            System.out.print("> ");
            int age = scanner.nextInt();
            
            //나이를 확인한다.
            if(age >= 19) {
                //성인 이므로 신체 등급을 입력받는다.
               System.out.println("신체 등급을 입력해주세요.");
               System.out.println("> ");
               int category = scanner.nextInt();
               
               if(category <= 3) {
                   System.out.println("현역입니다.");
               } else if(category == 4) {
                   System.out.println("공익입니다.");
               } else {
                   System.out.println("면제입니다.");
               }
                
            } else {
                //미성년자 이므로 메시지만 출력
                System.out.println("미성년자에게는 신체등급이 부여되지 않습니다.");
            }
            
        } else {
            //여자이므로 메시지만 출력
            System.out.println("여성에게는 국방의 의무가 부여되지 않습니다.");
        }
        
        
        scanner.close();
        
        
    }
}

 

6. 문제

/*퀴즈
 * 제한시간 15분
 * 사용자로부터 키와 몸무게를 입력받아
 * BMI 수치를 계산하고 비만도를 출력하는 프로그램을 작성하시오.
 * 
 * 기네스북에 따르면 세계에서 가장 키가 컸던 사람의 키는 2.72m였습니다.
 * 기네스북에 따르면 세계에서 가장 몸무게가 무거웠던 사람의 몸무게는 650킬로그램이였습니다.
 * 
 * 만약 사용자가 잘못된 값을 입력할 경우, 추가적인 입력 없이
 * "잘못된 입력을 감지하여 프로그램을 종료합니다."라는
 * 메시지가 출력되면서 프로그램이 종료되게 코드를 작성하시오.
 */

6. 답

더보기
package day0908;

import java.util.Scanner;

public class Ex13BmiChecker2 {
    public static void main(String[] args) {

//        //내가 한거
//        Scanner scanner = new Scanner(System.in);
//        
//        //상수
//        final double BMI_STANDARD1 = 18.5;
//        final double BMI_STANDARD2 = 23;
//        final double BMI_STANDARD3 = 25;
//       
//        System.out.println("이름을 입력해주세요");
//        System.out.print("> ");
//        String name = scanner.nextLine();
//        
//        System.out.println("키를 미터 단위로 입력해주세요");
//        System.out.print("> ");
//        double height = scanner.nextDouble();
//        
//        System.out.println("몸무게를 킬로그램 단위로 입력해주세요");
//        System.out.print("> ");
//        double weight = scanner.nextDouble();
//        
//        double bmi = weight / height / height;
//        
//        String result;
//        
//        if(height<2.72 && weight<650){
//                if(bmi < BMI_STANDARD1) {
//                    result= "저체중";
//                } else if(bmi < BMI_STANDARD2) {
//                    result = "정상체중";
//                } else if(bmi < BMI_STANDARD3) {
//                    result = "과체중";
//                } else {
//                    result = "비만";
//                }
//                
//                //결과 출력
//                System.out.printf("이름: [%s] 키: %.2f M 몸무게: %.2f kg\n", name, height, weight);
//                System.out.printf("BMI: %.3f 비만도: %s\n", bmi, result);
//                
//                
//        } else {
//            System.out.println("잘못된 입력을 감지하여 프로그램을 종료합니다.");
//        }
//        
//        scanner.close();

        // 썜이 한거
        Scanner scanner = new Scanner(System.in);

        // 각 최대값
        final double HEIGHT_MAX = 2.72;
        final double WEIGHT_MAX = 650;
        final double BMI_STANDARD1 = 18.5;
        final double BMI_STANDARD2 = 23;
        final double BMI_STANDARD3 = 25;

        System.out.println("키를 m 단위로 입력해주세요.");
        System.out.println("> ");
        double height = scanner.nextDouble();

        if (height > 0 && height <= HEIGHT_MAX) {
            // 키가 올바른 값이므로 몸무게 입력을 받는다.
            System.out.println("몸무게를 kg 단위로 입력해주세요");
            System.out.println("> ");
            double weight = scanner.nextDouble();

            if (weight > 0 && weight <= WEIGHT_MAX) {
                // 몸무게가 올바른 값이므로 이름 입력->BMI계산->비만도결정->결과출력 진행
                System.out.println("이름을 입력해주세요");
                System.out.print("> ");
                String name = scanner.nextLine();

                double bmi = weight / height / height;

                String result;

                if (bmi < BMI_STANDARD1) {
                    result = "저체중";
                } else if (bmi < BMI_STANDARD2) {
                    result = "정상체중";
                } else if (bmi < BMI_STANDARD3) {
                    result = "과체중";
                } else {
                    result = "비만";
                }

                // 결과 출력
                System.out.printf("이름: [%s] 키: %.2f M 몸무게: %.2f kg\n", name, height, weight);
                System.out.printf("BMI: %.3f 비만도: %s\n", bmi, result);

            } else {
                // 올바르지 않은 몸무게 이므로 경고 메시지만 출력한다.
                System.out.println("잘못된 입력을 감지하여 프로그램을 종료한다.");

            }

        } else {
            // 올바르지 않은 키이므로 경고 메시지만 출력한다.
            System.out.println("잘못된 입력을 감지하여 프로그램을 종료한다.");
        }
        
        scanner.close();

    }

}

 

 


Switch 조건문

더보기
package day0913;
/*Switch 조건문
 * switch 조건문의 경우, if 조건문과는 다르게
 * 변수를 하나 선택하여
 * 그 변수의 값에 대한 코드 처리를 하게 된다.
 * 또한, 명확하게 값이 나뉘는 변수들에 대해서만 switch 조건문을 만들어 줄수 있기 때문에
 * 정수형, 문자형 변수 혹은 연산의 결과값에 대해서만 switch 조건문을 만들 수 있다. //실수는 값이 명확하지 않기 때문에 안씀
 */

public class Ex01Switch {
    public static void main(String[] args) {
        int num = 2;
        
        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("그외입니다.");
            break;
        
    }
    }
}