Quest

[과제] 조건문

_유니 2022. 10. 31. 18:53


문제 1. 메뉴를 출력하고 메뉴 번호를 누르면 "OO메뉴입니다"를,
종료 번호를 누르면 " 프로그램이 종료됩니다."를 출력하세요.

package com.yh.practice.chap01;

import java.util.Scanner;

public class ControlPractice {
	
	public void practice1() {
		
		Scanner sc = new Scanner(System.in); //Scanner 객체 생성
		
		System.out.println("1.입력 ");
		System.out.println("2.수정 ");
		System.out.println("3.조회 ");
		System.out.println("4.삭제 ");
		System.out.println("7.종료 ");
		System.out.print("메뉴 번호를 입력하세요 : ");

		int menu = sc.nextInt(); // 정수를 입력받는 메소드
		String menuName = "";

		switch (menu) { 		문
		case 1:
			menuName = "입력";
			break; 				// 자신이 포함된 가장 가까운 반복문을 빠져나가는 구문
		case 2:
			menuName = "수정";
			break;
		case 3:
			menuName = "조회";
			break;
		case 4:
			menuName = "삭제";
			break;
		case 7:
			System.out.println("프로그램이 종료됩니다.");
			return; 			// 해당 메소드 자체를 빠져나가는 구문
		}

		System.out.println(menuName + " 메뉴입니다.");
	}
1.입력 
2.수정 
3.조회 
4.삭제 
7.종료 
메뉴 번호를 입력하세요 : 3
조회 메뉴입니다.

1.입력 
2.수정 
3.조회 
4.삭제 
7.종료 
메뉴 번호를 입력하세요 : 7
프로그램이 종료됩니다.

 



문제 2. 키보드로 정수를 입력받은 정수가 양수이면서 짝수일 때만 "짝수다:를 출력하고
짝수가 아니면 "홀수다"를 출력하세요.
양수가 아니면 " 양수만 입력해주세요."를 출력하세요.

package com.yh.practice.chap01;

import java.util.Scanner;

public class CrontrolPractice {

public void practice2() {
		
		Scanner sc = new Scanner(System.in); // 스캐너 생성
		
		System.out.print("숫자를 한 개 입력하세요 : ");
		int num = sc.nextInt(); 			// 정수를 입력받는 메소드
		
		if (num > 0) { 					// 양수일 경우
			if (num % 2 == 0) { 			// (양수이고) 짝수일 경우
				System.out.println("짝수다");
			} else { 				// (양수이고) 홀수일 경우
				System.out.println("홀수다");
			}
		} else { 					// 양수가 아닐 경우
			System.out.println("양수만 입력해주세요.");
		}
		
	}
숫자를 한 개 입력하세요 :10
짝수다

숫자를 한 개 입력하세요 :5
홀수다

숫자를 한 개 입력하세요 :-5
양수만 입력해주세요

 



문제 3. 국어, 영어, 수학 세 과목의 점수를 키보드로 입력받고 합계와 평균을 계산하고
합계와 평균을 이용하여 합격 / 불합격 처리하는 기능을 구현하세요.
(합격 조건 : 세 과목의 점수가 각각 40점 이상이면서 평균이 60점 이상일 경우)
합격했을 경우 과목 별 점수와 합계, 평균, "축하합니다, 합격입니다!"를 출력하고
불합격인 경우에는 "불합격입니다."를 출력하세요.

package com.yh.practice.chap01;

import java.util.Scanner;

public class ControlPractice {

	public void practice3() {
		
		Scanner sc = new Scanner(System.in); // 스캐너 생성
		
		System.out.print("국어점수 : ");
		int kor = sc.nextInt(); 			// 정수를 입력받는 메소드
		System.out.print("수학점수 : ");
		int math = sc.nextInt(); 			// 정수를 입력받는 메소드
		System.out.print("영어점수 : ");
		int eng = sc.nextInt(); 			// 정수를 입력받는 메소드

		int sum = kor + math + eng;
		double avg = sum / 3.0;

		if ((kor >= 40) && (math >= 40) && (eng >= 40) && (avg >= 60)) { // 세 과목의 점수가 각각 40점 이상이면서 평균이 60점 이상일 경우
			System.out.println("국어 : " + kor);
			System.out.println("수학 : " + math);
			System.out.println("영어 : " + eng);
			System.out.println("합계 : " + sum);
			System.out.println("평균 : " + avg);
			System.out.println("축하합니다, 합격입니다!");
		} else {
			System.out.println("불합격입니다.");
		}

	}
국어점수 : 80
수학점수 : 55
영어점수 : 45
국어 : 80
수학 : 55
영어 : 45
합계 : 180
평균 : 60.0
축하합니다, 합격입니다!

국어점수 : 80
수학점수 : 50
영어점수 : 40
불합격입니다.

 



문제 4. 1~12 사이의 정수를 입력받아
봄, 여름, 가을, 겨울 계절을 switch문으로 출력하세요.
3~5 : 봄 / 6~8 : 여름 / 9~11 : 가을 / 12~2 : 겨울

package com.yh.practice.chap01;

import java.util.Scanner;

public class ControlPractice {

	public void practice4() {
		
		Scanner sc = new Scanner(System.in); // 스캐너 생성

		System.out.print("1~12 사이의 정수 입력 : ");
		int month = sc.nextInt(); // 정수를 입력받는 메소드
		
		switch (month) {
		case 3:
		case 4:
		case 5:
			System.out.println(month + "월은 봄입니다.");
			break; // 자신이 포함된 가장 가까운 반복문을 빠져나가는 구문
		case 6:
		case 7:
		case 8:
			System.out.println(month + "월은 여름입니다.");
			break;
		case 9:
		case 10:
		case 11:
			System.out.println(month + "월은 가을입니다.");
			break;
		case 12:
		case 1:
		case 2:
			System.out.println(month + "월은 겨울입니다.");
			break;
		default:
			System.out.println(month + "월은 잘못 입력된 달입니다.");
			break;
		}
		
	}
1~12 사이의 정수 입력 : 10
10월은 가을입니다.

1~12 사이의 정수 입력 : 10
10월은 가을입니다.

 



문제 5. 아이디, 비밀번호를 정해두고 로그인 기능을 작성하세요.
로그인 성공 시 "로그인 성공",
아이디가 틀렸을 시 "아이디가 틀렸습니다.",
비밀번호가 틀렸을 시 "비밀번호가 틀렸습니다."를 출력하세요.

package com.yh.practice.chap01;

import java.util.Scanner;

public class ControlPractice {

	public void practice5() {
		
		Scanner sc = new Scanner(System.in); // 스캐너 생성
		
		String userId = "myId";
		String userPw = "myPw12";

		System.out.print("아이디 : ");
		String id = sc.nextLine(); // 문자열을 엔터 전까지 입력받는 메소드

		System.out.print("비밀번호 : ");
		String pw = sc.nextLine(); // 문자열을 엔터 전까지 입력받는 메소드

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

	}
아이디 : myId
비밀번호 : myPw12
로그인 성공

아이디 : myId
비밀번호 : myPw
비밀번호가 틀렸습니다.

아이디 : my
비밀번호 : myPw12
아이디가 틀렸습니다.



나는 epuals()에 아이디랑 비번을 때려 넣었는데…
문제가 아이디와 비밀번호를 정해두라고 했기 때문에 변수 생성해서 지정해 주는 것이 더욱 정확한 정답이다 ^^

public void practice5() {
		
		Scanner sc = new Scanner(System.in);
		
		System.out.print("아이디 : ");
		String id = sc.nextLine();
		
		System.out.print("비밀번호 : ");
		String pw = sc.nextLine();
		
		if (id.equals("myId")) {
			if(pw.equals("myPw12")) {
				System.out.println("로그인 성공");
			} else {
				System.out.println("비밀번호가 틀렸습니다.");
			}
		} else {
			System.out.println("아이디가 틀렸습니다.");
		}
		
	}

 



문제 6. 사용자에게 관리자, 회원, 비회원 중 하나를 입력받아 각 등급이 행할 수 있는 권한을 출력하세요.
단, 관리자는 회원관리, 게시글 관리, 게시글 작성, 게시글 조회, 댓글 작성이 가능하고
회원은 게시글 작성, 게시글 조회, 댓글 작성이 가능하고
비회원은 게시글 조회만 가능합니다.

package com.yh.practice.chap01;

import java.util.Scanner;

public class ControlPractice {

	public void practice6() {
		
		Scanner sc = new Scanner(System.in); // 스캐너 생성
		
		System.out.print("권한을 확인하고자 하는 회원 등급 : ");
		String level = sc.nextLine(); // 문자열을 엔터 전까지 입력받는 메소드
		
		switch (level) { 
		case "관리자":
			System.out.print("회원관리, 게시글 관리, ");
		case "회원":
			System.out.print("게시글 작성, 댓글 작성, ");
		case "비회원":
			System.out.print("게시글 조회");
		}
		
	}
권한을 확인하고자 하는 회원 등급 : 관리자
회원관리,게시글 관리, 게시글 작성, 댓글 작성, 게시글 조회

권한을 확인하고자 하는 회원 등급 : 회원
게시글 작성, 댓글 작성, 게시글 조회

권한을 확인하고자 하는 회원 등급 : 비회원
게시글 조회






문제 7. 키, 몸무게를 double로 입력받고 BMI지수를 계산하여 계산 결과에 따라
저체중/정상체중/과체중/비만을 출력하세요.
BMI = 몸무게 / (키(m) * 키(m))
BMI가 18.5 미만일 경우 저체중 / 18.5 이상 23 미만일 경우 정상체중
BMI가 23 이상 25 미만일 경우 과체중 / 25 이상 30 미만일 경우 비만
BMI가 30 이상일 경우 고도 비만

package com.yh.practice.chap01;

import java.util.Scanner;

public class ControlPractice {

	public void practice7() {
		
		Scanner sc = new Scanner(System.in); // 스캐너 생성
		
		System.out.print("키(m)를 입력해 주세요 : ");
		double height = sc.nextDouble(); // 실수를 입력받는 메소드
		
		System.out.print("몸무게(kg)를 입력해 주세요 : ");
		double weight = sc.nextDouble(); // 실수를 입력받는 메소드
		
		double bmi = weight / (height * height);
		
		System.out.println("BMI 지수 : " + bmi);
		
		if (bmi < 18.5) {
			System.out.println("저체중");
		} else if (bmi < 23 ) {
			System.out.println("정상체중");
		} else if (bmi < 25 ) {
			System.out.println("과체중");
		} else if (bmi < 30 ) {
			System.out.println("비만");
		} else {
			System.out.println("고도 비만");
		}
		
	}
키(m)를 입력해 주세요 : 1.69
몸무게(kg)를 입력해 주세요 : 58.2
BMI 지수 : 20.37743776478415
정상체중

 



문제 8. 키보드로 두 개의 정수와 연산 기호를 입력받아 연산 기호에 맞춰 연산 결과를 출력하세요.
(단, 두 개의 정수 모두 양수일 때만 작동하며 없는 연산 기호를 입력했을 시
"잘못 입력하셨습니다. 프로그램을 종료합니다." 출력)

package com.yh.practice.chap01;

import java.util.Scanner;

public class ControlPractice {

	public void practice8() {
		
		Scanner sc = new Scanner(System.in); // 스캐너 생성
		
		System.out.print("피연산자1 입력 : ");
		int num1 = sc.nextInt(); // 정수를 입력받는 메소드
		
		System.out.print("피연산자2 입력 : ");
		int num2 = sc.nextInt(); // 정수를 입력받는 메소드
		
		sc.nextLine(); // 버퍼에 남아있는 엔터를 제거하기 위한 메소드
		
		System.out.print("연산자를 입력(+,-,*,/,%) : ");
		String op = sc.nextLine(); //// 문자열을 엔터 전까지 입력받는 메소드

		int result = 0;
		
		if ((num1 > 0) && (num2 > 0)) {
			switch (op) { 
			case "+":
				result = num1+num2;
				System.out.println(num1 + op + num2 + "=" + result);
				break; // 자신이 포함된 가장 가까운 반복문을 빠져나가는 구문
			case "-":
				result = num1-num2;
				System.out.println(num1 + op + num2 + "=" + result);
				break;
			case "*":
				result = num1*num2;
				System.out.println(num1 + op + num2 + "=" + result);
				break;
			case "/":
				result = num1/num2;
				System.out.println(num1 + op + num2 + "=" + result);
				break;
			case "%":
				result = num1%num2;
				System.out.println(num1 + op + num2 + "=" + result);
				break;
			default:
				System.out.println("잘못 입력하셨습니다. 프로그램을 종료합니다.");
				break; // 
				}
		} else {
			System.out.println("잘못 입력하셨습니다. 프로그램을 종료합니다.");
			return; // 해당 메소드를 빠져나가는 구문
		}

	}
피연산자1 입력 : 14
피연산자2 입력 : 7
연산자를 입력(+,-,*,/,%) : *
14 * 7 = 98

피연산자1 입력 : 17
피연산자2 입력 : -7
연산자를 입력(+,-,*,/,%) : /
잘못입력하셨습니다. 프로그램을 종료합니다.

피연산자1 입력 : 15
피연산자2 입력 : 4
연산자를 입력(+,-,*,/,%) : >
잘못 입력하셨습니다. 프로그램을 종료합니다.


sc.nextInt(); 이후에 sc.nextLine();가 오게 되면
꼭!! 엔터 제거를 위해 sc.nextLine();를 넣자!!!!
이거 빼먹어서 한참 쩔쩔맴;;



문제 9. 중간고사, 기말고사, 과제점수, 출석회수를 입력하고 Pass 또는 Fail을 출력하세요.
평가 비율은 중간고사 20%, 기말고사 20%, 과제 30%, 출석 20%로 이루어져 있고
이때, 출석 비율은 출석 회수의 총 강의 회수 20회 중에서 출석한 날만 따진 값으로 계산하세요.
70점 이상일 경우 Pass, 70점 미만이거나 전체 강의에 30% 이상 결석 시 Fail을 출력하세요.

package com.yh.practice.chap01;

import java.util.Scanner;

public class ControlPractice {

	public void practice9() {

		Scanner sc = new Scanner(System.in); // 스캐너 생성

		System.out.print("중간 고사 점수 : ");
		double mScore = sc.nextDouble(); // 실수를 입력받는 메소드

		System.out.print("기말 고사 점수 : ");
		double fScore = sc.nextDouble(); //실수를 입력받는 메소드

		System.out.print("과제 점수 : ");
		double hScore = sc.nextDouble(); // 실수를 입력받는 메소드

		System.out.print("출석 횟수 : ");
		double aScore = sc.nextDouble(); // 실수를 입력받는 메소드

		if (aScore <= 14) {
			System.out.println("============결과============");
			System.out.println("Fail [출석 회수 부족 (" + (int) aScore + "/ 20)]");
			return;
		}

		System.out.println("============결과============");
		System.out.println("중간 고사 점수(20) : " + (mScore = mScore * 0.2));
		System.out.println("기말 고사 점수(30) : " + (fScore = fScore * 0.3));
		System.out.println("과제 점수(30) : " + (hScore = hScore * 0.3));
		System.out.println("출석 점수(20): " + aScore);

		double sumScore = mScore + fScore + hScore + aScore;

		System.out.println("총점 : " + sumScore);

		if (aScore > 14) { // if문
			if (sumScore >= 70) {
				System.out.println("PASS");
			} else {
				System.out.println("Fail [점수 미달]");
			}
		}
	}

 

중간 고사 점수 : 80
기말 고사 점수 : 90
과제 점수 : 50
출석 횟수 : 15
============결과============
중간 고사 점수(20) : 16.0
기말 고사 점수(30) : 27.0
과제 점수(30) : 15.0
출석 점수(20): 15.0
총점 : 73.0
PASS

중간 고사 점수 : 80
기말 고사 점수 : 30
과제 점수 : 50
출석 횟수 : 16
============결과============
중간 고사 점수(20) : 16.0
기말 고사 점수(30) : 9.0
과제 점수(30) : 15.0
출석 점수(20): 16.0
총점 : 56.0
Fail [점수 미달]

중간 고사 점수 : 100
기말 고사 점수 : 80
과제 점수 : 70
출석 횟수 : 10
============결과============
Fail [출석 회수 부족 (10/ 20)]