Categories: Java 언어Korean

Java 총 정리[17.제어문 문제2]

문제 풀기 2

제어문을 배우고 나서 제어문과 관련된 예제를 한 문제 정도로는 충분하다고 생각을 하시나요? 여러분도 부족하다고 느끼시죠? 저도 당연히 문제가 부족하다고 많이 느끼고 있습니다. 

이번에도 이전 문제와 다른 문제를 풀어볼 수 있도록 하겠습니다. 과연 어떤 문제인지 궁금하시죠? 저도 문제를 많이 올릴 수 있도록 하겠습니다. 이 글을 끝까지 보고 문제를 풀고 하신다면 분명 실력이 향상 되실 수 있습니다.

이번 문제는 반복문은 포함이 되지 않고 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보다 큰 경우에 과목만 문자열 더하기를 합니다.

Dolphin

Recent Posts

Java 총정리[97. Java GUI]

Java GUI Java GUI에 대해서 이번 걸음에서 배움으로써 GUI에 전반적인 지식과 Java GUI를 구현하는 방법…

7개월 ago

Java 총정리[96. Java TCP 통신 프로그램 구현]

Java TCP 통신 프로그램 구현 Java TCP 통신 프로그램 구현을 위해서 이전 걸음에서 쓰레드에 대한…

7개월 ago

Java 총정리[95.쓰레드 통신]

쓰레드 통신 이전 걸음에서 쓰레드의 임계영역에 대해서 같이 공부를 했습니다. 동기화에 대한 개념을 계속적으로 하고…

7개월 ago

Java 총 정리[94. 쓰레드 임계영역]

쓰레드 임계영역 이전 걸음에서 쓰레드의 동기화에 대해서 같이 공부를 했습니다. 동기화에 대한 전반적인 내용을 공부하고…

8개월 ago

Java 총 정리[93. 쓰레드 동기화]

쓰레드 동기화 이전 걸음에서 계속 쓰레드에 대해서 공부를 하고 있습니다. 쓰레드는 상당히 중요한 개념이기 때문에…

8개월 ago

Java 총 정리[92. 쓰레드 join()]

쓰레드 join() 이전 걸음에서 쓰레드의 전반적인 실행 흐름에 대해서 공부를 했습니다. 이제 배운 실행 흐름…

8개월 ago

This website uses cookies.