본문 바로가기
Java/Java 문제

[Java] 조건문(if, switch)_실습문제

by 콧등치기국수 2021. 5. 8.

1. String str = ""; 을 이용해서 간단하게 적기

public void practice1() {
		System.out.println("1. 입력");
		System.out.println("2. 수정");
		System.out.println("3. 조회");
		System.out.println("4. 삭제");
		System.out.println("9. 종료");
		
		Scanner sc = new Scanner(System.in);
		System.out.print("메뉴 번호를 입력하세요 : ");
		int select = sc.nextInt();
        
        	String str = "";
		
		switch(select) {
		case 1: str = "입력"; break;
		case 2: str = "수정"; break;
		case 3: str = "조회"; break;
		case 4: str = "삭제"; break;
		case 9: str = "종료"; break;
		default: System.out.println("잘못 입력하셨습니다."); return;	
		}
		
		System.out.println(str + "메뉴입니다.");  //case 1,2,3,4,9 수행 후 출력
						         //default 수행 후 return되므로 이 문장은 출력 X

1) case마다 System.out.println을 적지 않는 방법

2) 반복되는 출력문인 "메뉴입니다."를 이용하기

3) switch문 case마다 공통적으로 출력되는 문장 출력하는 것이 아닌,

switch문을 빠져나갔을 때 공통적으로 출력되는 문장 출력되도록 하기

 

 

 

2. switch - break;있을 때까지 아래로 수행

Scanner sc = new Scanner(System.in);
		
		System.out.print("권한을 확인하고자 하는 회원 등급 : ");

		switch(sc.nextLine()) { //이렇게 바로 입력해서 비교할 수도 있음!
		case "관리자":
			System.out.println("회원관리, 게시글 관리");
		case "회원" :
			System.out.println("게시글 작성, 댓글 작성");
		case "비회원" :
			System.out.println("게시글 조회");
			break;
		default :
			System.out.println("잘못 입력했습니다.");
			return;  //break;도 가능
		}

1) "관리자" 입력한 경우

회원관리, 게시글 관리

게시글 작성, 댓글 작성

게시글 조회

 

2) "회원" 입력한 경우

게시글 작성, 댓글 작성

게시글 조회

 

3) "비회원" 입력한 경우

게시글 조회

 

 

 

3. 중첩 조건문(if) - 조건 나누는 것 잘 보자!

		String id = "user1";
		String pw = "1234";
			
		Scanner sc = new Scanner(System.in);
		
		System.out.print("아이디 : ");
		String user_id = sc.nextLine();	
		System.out.print("비밀번호 : ");
		String user_pw = sc.nextLine();

		if(id.equals(user_id)) {
			if(pw.equals(user_pw)) {
				System.out.println("로그인 성공");
			}else {
				System.out.println("비밀번호가 틀렸습니다.");
			}
		}else {
			if(pw.equals(user_pw)) {
				System.out.println("아이디가 틀렸습니다.");
			}else {
				System.out.println("모두 틀렸습니다.");
			}
		}

1) id 맞음  --> 1-1) 비번 맞음 : 로그인 성공

                    1-2) 비번 틀림 : 비밀번호가 틀렸습니다.

 

2) id 틀림  --> 1-1) 비번 맞음 : 아이디가 틀렸습니다.

                    1-2) 비번 틀림 : 모두 틀렸습니다.

 

 

 

 

4. 중첩조건문 - 하나의 조건문 안에 다른 조건문 2개 만들기! 

		Scanner sc = new Scanner(System.in);
		System.out.print("중간 고사 점수: ");
		int mid = sc.nextInt();
		System.out.print("기말 고사 점수: ");
		int fin = sc.nextInt();
		System.out.print("과제 점수: ");
		int work= sc.nextInt();
		System.out.print("출석 회수: ");
		int attend= sc.nextInt();
		
		double total = mid*0.2 + fin*0.3 + work*0.3 + attend;
		
		System.out.println("========결과========");
		
		if(total>=70 && attend >= 20*0.7) {
			System.out.println("중간 고사 점수(20) : "+ mid*0.2);
			System.out.println("기말 고사 점수(30) : "+ fin*0.3);
			System.out.println("과제 점수    (30) : "+ work*0.3);
			System.out.println("출석 점수    (20) : "+ attend*1.0);
			System.out.println("총점 : " + total);
			System.out.println("PASS");
			
		}else {  //총점이 부족할 수도 있고, 출석 횟수가 부족할 수도 있고, 아니면 둘다 부족할 수도 있음
			if(attend < 20*0.7) {
				System.out.println("FAIL [출석 횟수 부족] (" + attend + "/20)");
			}
			
			// 위아래 조건문 각각 별개 --> 만일 둘다 부족할 경우 둘 다 실행될 것!
			
			if(total < 70) {
				System.out.println("FAIL [점수 미달] (총점 " + total + ")");
			}
		}

1) System.out.println("========결과========");

if/else문에 각각 적어주지 않고 맨 앞에 빼서 반복적으로 적지 않는다!

 

2)

else {

       if ( attend < 20*0.7 ) {

           System.out.println( "FAIL [출석 횟수 부족] (" + attend + "/20)");

       }

       if ( total < 70 ) {

           System.out.println( "FAIL [점수 미달] (총점 " + total + ")");

       }

 }

 

else { } 안에 별개의 if문 2개를 작성

--> if문 2개 모두 조건이 충족되면

--> 출력도 2개 문장 모두 된다!!