[과제] 조건문
문제 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)]