제어문을 배우고 나서 제어문과 관련된 예제를 한 문제 정도로는 충분하다고 생각을 하시나요? 여러분도 부족하다고 느끼시죠? 저도 당연히 문제가 부족하다고 많이 느끼고 있습니다.
이번에도 이전 문제와 다른 문제를 풀어볼 수 있도록 하겠습니다. 과연 어떤 문제인지 궁금하시죠? 저도 문제를 많이 올릴 수 있도록 하겠습니다. 이 글을 끝까지 보고 문제를 풀고 하신다면 분명 실력이 향상 되실 수 있습니다.
이번 문제는 반복문은 포함이 되지 않고 1회만 동작하는 문제입니다. 하지만 조건문을 많이 쓰고 사용하며 논리 연산자도 사용이 될 수 있기 때문에 좋은 문제라고 생각합니다. 또한 배운 것을 토대로 하시면 좀 더 간결한 소스를 구현을 하실 수 있습니다. 이 글을 보고 한 번 도전을 해보세요.
현재까지 배운 내용을 기준으로 변수, 연산자, 출력문, 입력문, 조건문을 모두 활용을 해볼 수 있는 기초적인 문제입니다.
※ 정답은 하나가 아닙니다. 문제의 대한 결과가 동작을 한다면 정답입니다. 밑에 나오는 정답은 참고를 하시면 됩니다.
※ 결과에 대한 테스트를 예시로만 하는 것보다 여러가지를 하셔서 생각하는 결과로 나오는 확인을 하시는 것이 더욱 더 좋습니다.
위 문제를 Class를 생성하고 Main문에 소스를 구현해 주세요.
실행 관련 걸음 : 다섯 걸음, 여섯걸음
참고해주세요.
import java.util.Scanner;
public class Q3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//입력
Scanner sc = new Scanner(System.in);
System.out.print("국어 : ");
int kor = sc.nextInt();
System.out.print("영어 : ");
int eng = sc.nextInt();
System.out.print("수학 : ");
int math = sc.nextInt();
//올바른 입력
if(kor >=0 && kor <=100 && eng >=0 && eng <=100 &&
math >=0 && math <=100) {
double avg = (double)(kor+eng+math) / 3.0;
String g = "";
//평균을 기준으로 학점을 문자열에 담기
if(avg >=95) {
g = "A+";
}
else if(avg >= 90) {
g = "A";
}
else if(avg >=85) {
g = "B+";
}
else if(avg >=80) {
g = "B";
}
else if(avg >=75) {
g = "C+";
}
else if(avg >=70) {
g = "C";
}
else if(avg >=60) {
g = "D";
}
else {
g = "F";
}
//평균 점수 소수점 첫자리 까지 출력과 학점 출력
System.out.printf("평균 %.1f점이고 학점은 %s 입니다.", avg,g);
}
//잘못된 입력
else {
String wrongResult = "";
if(kor < 0 || kor > 100) {
wrongResult += "국어 ";
}
if(eng < 0 || eng > 100) {
wrongResult += "영어 ";
}
if(math < 0 || math > 100) {
wrongResult += "수학 ";
}
System.out.println(wrongResult+"잘못 입력 됐습니다.");//출력
}
}
}
생각을 해보기
처음 이 문제를 해결 할 때 올바른 입력과 잘못된 입력으로 처음 분기를 해주고 그 이후에 올바른 입력에 대한 실행문을 구현을 하고 잘못된 입력의 안에서 잘못된 입력이 동작하도록 구현을 한다면 좀 더 쉽게 프로그래밍을 하실 수 있습니다.
&&(and), ||(or) 사용에 대해서 한번 확인을 해보시면 도움이 됩니다.
참고
//단일 if문으로 구현 만약에 if-else-if문으로 구현을 하면 어떻게 달라질까요?
(생각을 해보시면 도움이 됩니다.)
// 국어 -> 수학 까지 문자열 더하기 연산으로 문자열과 문자열을 더합니다.
//문자열 + 문자열을 더하면 이어 쓰기가 됩니다. 예) “a” + “b” = “ab“
//조건은 과목이 0보다 작고 100보다 큰 경우에 과목만 문자열 더하기를 합니다.