Q. 다음 요구사항에 맞게 성적관리 프로그램을 구현하세요
- 입력
사용자 이름, 국어점수, 영어점수, 수학점수
- 처리
총점, 평균, 통과인지 판정(각 과목 40점 이상이고 평균 60점 이상)
- 출력
이름, 총점, 평균
통과인지 아닌지 결과를 문자열로 출력(해당 평가 통과입니다/재평가입니다)
package condition;
import java.lang.*;
import java.util.Scanner;
public class test05 {
public static void main(String[] args) {
//입력
Scanner sc = new Scanner(System.in);
System.out.println("이름을 입력하세요");
String name = sc.next();
System.out.println("국어점수를 입력하세요");
int korean = sc.nextInt();
System.out.println("영어점수를 입력하세요");
int english = sc.nextInt();
System.out.println("수학점수를 입력하세요");
int match = sc.nextInt();
sc.close();
//처리
int sum = korean + english + match ;
float avg = (float) (sum/3);
boolean pass = 60 <= avg && 40 <= korean && 40 <= english && 40 <= match ;
//결과
System.out.println("이름 = " + name);
System.out.println("총점 = " + sum + "점");
System.out.println("평균 = " + avg + "점");
if(pass) {
System.out.println("해당 평가 통과 입니다!");
}
else {
System.out.println("재평가 입니다!");
}
}
}
- 정답
이름을 입력하세요
홍길동
국어점수를 입력하세요
100
영어점수를 입력하세요
50
수학점수를 입력하세요
50
이름 = 홍길동
총점 = 200점
평균 = 66.0점
해당 평가 통과 입니다!
다중 조건
Q. 나이에 따라 10대, 20대, 30대, 기타로 구분하는 프로그램
1. if 로만 해보기
package condition;
import java.lang.*;
public class Test06 {
public static void main(String[] args) {
// 다중 조건
// 나이에 따라 10대, 20대, 30대, 기타로 구분하는 프로그램
// 입력
int age = 20;
// 출력
if (age >= 10 && age < 20) {
System.out.println("당신은 10대입니다");
}
if (age >= 20 && age < 30) {
System.out.println("당신은 20대입니다");
}
if (age >= 30 && age < 40) {
System.out.println("당신은 30대입니다");
}
if (age < 10 || age >= 40) {
System.out.println("당신은 해당 대상이 아닙니다");
}
}
}
2. if, else 로 해보기
package condition;
import java.lang.*;
public class Test07 {
public static void main(String[] args) {
// 입력
int age = 19;
// 출력
if (age >= 10 && age < 20) {
System.out.println("당신은 10대입니다");
} else {
if (age >= 20 && age < 30) {
System.out.println("당신은 20대입니다");
} else {
if (age >= 30 && age < 40) {
System.out.println("당신은 30대입니다");
} else {
System.out.println("당신은 해당 대상이 아닙니다");
}
}
}
}
}
3. if, else if, else 로 해보기
package condition;
import java.lang.*;
public class Test08 {
public static void main(String[] args) {
// 다중 조건
// 나이에 따라 10대, 20대, 30대, 기타로 구분하는 프로그램
// 입력
int age = 19;
// 출력
if (age >= 10 && age < 20) {
System.out.println("당신은 10대입니다");
} else if (age >= 20 && age < 30) {
System.out.println("당신은 20대입니다");
} else if (age >= 30 && age < 40) {
System.out.println("당신은 30대입니다");
} else {
System.out.println("당신은 해당 대상이 아닙니다");
}
}
}
Q. 사용자에게 생년월일 4자리를 입력받아 지하철 요금을 계산하여 출력
지하철요금표
어르신(65세 이상) : 무료
성인(20세 이상 65세 미만) : 1250원
청소년(14세 이상 20세 미만) : 720원
어린이(8세 이상 14세 미만 : 450원
영유아(8세 미만) : 무료
1. 요금이 고정이다
package condition;
import java.lang.*;
import java.util.Scanner;
public class Test09 {
public static void main(String[] args) {
// 입력
Scanner sc = new Scanner(System.in);
System.out.println("생년월일 4자리를 입력하세요");
int birth = sc.nextInt();
sc.close();
//처리
int thisYear = 2021;
int age = thisYear - birth +1 ;
// 출력
System.out.println("나이 : " + age + "살");
if (age >= 20 && age <65) {
System.out.println("요금 : 1250원");
} else if (age >= 14 && age <20) {
System.out.println("요금 : 720원");
} else if (age >= 8&& age <14) {
System.out.println("요금 : 450원");
} else {//영유아 또는 어르신
System.out.println("요금 : 0원");
}
}
}
2. 요금을 쉽게 변경 가능하고 + 보증금을 추가 할 수 있다.
package condition;
import java.lang.*;
import java.util.Scanner;
public class Test9_4 {
public static void main(String[] args) {
//입력(준비)
Scanner sc = new Scanner(System.in);
System.out.println("출생년도 4자리 입력");
int birth = sc.nextInt();
sc.close();
//처리(계산)
int thisYear = 2021;
int age = thisYear - birth + 1;
int price;
if(age < 8 || age >= 65) {//영유아 또는 어르신이라면
price = 0;
}
else if(age >= 20) {//성인이라면
price = 1250;
}
else if(age >= 14) {//청소년이라면
price = 720;
}
else {//어린이라면
price = 450;
}
//카드 보증금 500원 추가
price = price + 500;
//출력(결과)
System.out.println("나이 : " + age);
System.out.println("요금 : " + price + "원");
}
}
- 정답
출생년도 4자리 입력
1995
나이 : 27
요금 : 1250원
Q. 여행사에서는 고객을 유치시키기 위해 다음과 같은 프로모션을 진행합니다.
- 프로모션 내용
계절(봄,여름,가을,겨울) 별로 할인율을 다르게 적용시킨다.
봄 :10%, 여름:40%, 가을:30%, 겨울:20%
하루 여행 경비는 1인당 10만원으로 한다
사용자에게 다음 정보를 입력받아 할인율과 할인이 적용된 예상 경비를 계산하여 출력
여행 갈 달의 정보를 1~12 사이의 숫자로 입력받는다.
여행 갈 기간의 정보를 일단위의 숫자로 입력받는다.
package condition;
import java.lang.*;
import java.util.Scanner;
public class Test10 {
public static void main(String[] args) {
// 입력
Scanner sc = new Scanner(System.in);
System.out.println("여행 갈 달을 입력 하세요 (1~12)");
int month = sc.nextInt();
System.out.println("여행 기간(일)을 입력 하세요");
int day = sc.nextInt();
sc.close();
//처리
int dayPrice = 100000;
int discountRate;
if(month == 3 || month == 4 || month == 5) { // 봄
discountRate = 10 ;
}
else if(month == 6 || month == 7 || month == 8) { //여름
discountRate = 40 ;
}
else if(month == 9 || month == 10 || month == 11) { //가을
discountRate = 30 ;
}
else { //겨울
discountRate = 20 ;
}
int beforeDiscount = day * dayPrice;
int afterDiscount = beforeDiscount * (100 - discountRate) / 100; // 할인율
//출력(결과)
System.out.println("여행 가는 달 : " + month + "월");
System.out.println("여행 가는 기간 : " + day + "일");
System.out.println("할인 전 요금 : " + beforeDiscount + "원");
System.out.println("할인율 : "+ discountRate + "%");
System.out.println("할인 후 요금 : " + afterDiscount + "원");
}
}
- 정답
여행 갈 달을 입력 하세요 (1~12)
6
여행 기간(일)을 입력 하세요
5
여행 가는 달 : 6월
여행 가는 기간 : 5일
할인 전 요금 : 500000원
할인율 : 40%
할인 후 요금 : 300000원
Q. SNS에 글을 올리면 올린 시간이 다음과 같은 기준으로 표시됩니다
올린지 몇 초가 지났는지에 따라서 다음과 같이 구분하여 출력
10초 이하인 경우 "방금 전"이라고 출력
60초 미만인 경우 "?초 전"이라고 출력
1시간 미만인 경우 "?분 전"이라고 출력(초단위는 출력하지 않음)
1일 미만인 경우 "?시간 전"이라고 출력(분, 초단위는 출력하지 않음)
1일 이상인 경우 "오래 전"이라고 출력
설정된 초(second)에 따라서 위의 메세지 중 하나가 선택되어 화면에 출력되도록 구현
String으로 구현해보기
package condition;
import java.lang.*;
import java.util.Scanner;
public class Test11 {
public static void main(String[] args) {
// 입력
Scanner sc = new Scanner(System.in);
System.out.println("초를 입력하세요");
int second = sc.nextInt();
sc.close();
// 처리
// String message = "방금 전" or "?초 전" or "?분 전" or "?시간 전" or "오래 전";
String message;
if (second <= 10) {
message = "방금 전";
} else if (second < 60) {
message = second + "초 전";
} else if (second < 60 * 60) {
int minute = second / 60;
message = minute + "분 전";
} else if (second < 24 * 60 * 60) {
int hour = second / 60 / 60;
message = hour + "시간 전";
} else {
message = "오래 전";
}
// 출력
System.out.println(message);
}
}
- 정답
초를 입력하세요
500
8분 전
과제
사용자가 `연도`와 `월`을 입력하면 입력된 월의 마지막 날짜를 구하여 출력하는 프로그램을 구현하려고 합니다.
예를 들어서 `2020`년 `2`월을 요청하면 `29`라는 결과가 출력되어야 합니다.
우리가 현재 사용하는 달력은 `그레고리안 달력`이며, 다음 기준에 의해서 월별 일자가 정해집니다.
- 큰달 : 31일까지 있는 달(1, 3, 5, 7, 8, 10, 12월)
- 작은달 : 30일까지 있는 달(4, 6, 9, 11월)
- 2월 : 윤년 여부에 따라서 28 또는 29일까지 존재
그레고리안 달력에서 1년은 364.253.. 일입니다.
완전한 365일이 아니기 때문에 이를 보충하기 위해서
다음 기준에 해당하는 연도에는 29일까지 존재하도록 하루를 추가합니다.
1. 4의 배수면 윤년
2. 100의 배수는 윤년에서 제외
3. 400의 배수는 윤년에 추가
package condition;
import java.lang.*;
import java.util.Scanner;
public class Test12 {
public static void main(String[] args) {
// 입력
Scanner sc = new Scanner(System.in);
System.out.println("연도를 입력하세요");
int year = sc.nextInt();
System.out.println("월을 입력하세요");
int month = sc.nextInt();
sc.close();
// 처리
boolean leapYear = ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)); // 윤년 O
// 결과
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
System.out.println("31일");
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
System.out.println("30일");
} else if (leapYear) {
System.out.println("29일");
} else {
System.out.println("28일");
}
}
}
'Java 웹 개발' 카테고리의 다른 글
21.08.23 - 웹 개발 입문 9일차 (0) | 2021.08.23 |
---|---|
21.08.20 - 웹 개발 입문 8일차 (0) | 2021.08.20 |
21.08.18 - 웹 개발 입문 6일차 (0) | 2021.08.18 |
21.08.17 - 웹 개발 입문 5일차 (0) | 2021.08.17 |
21.08.16 - 웹 개발 입문 4일차 (0) | 2021.08.16 |