-
[JAVA]구조적 프로그래밍(3)JAVA 2021. 3. 3. 15:09
안녕하세요!
이번에도 자바의 구조적 프로그래밍에 대해 알아보도록 할게요~
이번에는 코드를 사용하여 직접적으로 사용해보겠습니다
위 글또한 뉴렉처님 강의를 바탕으로 작성합니다.
( 다같이 따라해봐요 :) )
드가자~~
3. 에서 오류가 발생하는 이유는 exam이 가르키는것이 null 이기 때문에
참조형식인 exam 은 new를 통해 만든 객체를 대입해야한다!
아래처럼!
4. 여기서 Exam은 2에서 만든 Exam의 class를 의미한다.
exam의 이름은 다른 것을 사용해도 된다!
ex) Exam roro = new Exam();
roro.kor = 30;
자, 그럼 준비운동은 끝났습니다! 이제 성적을 입력받고 출력하는 것을 함수로 만들어 보겠습니다!
5. 입력함수와 출력함수를 작성하였고, input(exam); 은 exam을 통해 new Exam()을 참조한다는 뜻입니다!
6. input(exam), print(exam) 함수 생성! 그리고 반환이 없기 때문에 void를 사용합니다!
7. input함수에서 국어,영어,수학점수를 출력하는 로직을 구현했습니다.
여기서 좀 아쉬운점이 있습니다. 바로 exam.kor, exam.eng, exam.math 등 .이 연산자이기 때문에 이를 줄여준다면
좋은 코딩이 될것 같습니다.
다음으로 성적 입력 함수로직을 짜보겠습니다!
9. 프린트 함수입니다. Scanner scan = new Scanner(System.in); 을 통해
Scanner를 불러오고 변수 kor, eng, math를 선언!
do while을 이용해 국어점수가 0점 보다 낮거나 100점 초과를 입력할 경우 계속 반복되게 입력합니다.
위의 조건을 빠져나온 kor 점수를 exam.kor 에 담습니다!
우리가 할 것은 국어성적뿐 아니라 영어, 수학성적까지 완성하는 것이기 때문에 똑같은 방법으로 완성해줍시다!
영어는 한번 해보시길 바랍니다!
최종 로직!
package part2.ex3.데이터구조화; import java.util.Scanner; public class ExamProgram1 { public static void main(String[] args) { Exam exam = new Exam(); input(exam); print(exam); } private static void input(Exam exam) { System.out.println("┌───────────────────────────┐"); System.out.println(" 성적 출력 "); System.out.println("└───────────────────────────┘"); System.out.println(); int kor = exam.kor; int eng = exam.eng; int math = exam.math; int total = kor + eng + math; float avg = total / 3.0f; System.out.println(); System.out.printf("국어 %d\n", kor); System.out.printf("영어 %d\n", eng); System.out.printf("수학 %d\n", math); System.out.printf("총점 : %3d\n", total); System.out.printf("평균 : %6.2f\n", avg); System.out.println("─────────────────────────────"); } private static void print(Exam exam) { Scanner scan = new Scanner(System.in); System.out.println("┌────────────────────────────┐"); System.out.println(" 성적 입력 "); System.out.println("└────────────────────────────┘"); System.out.println(); int kor, eng, math; do { System.out.printf("국어:"); kor = scan.nextInt(); if (kor < 0 || 100 < kor) System.out.println("국어성적은 0~100 까지의 범위만 입력 가능합니다."); } while (kor < 0 || 100 < kor); do { System.out.printf("영어:"); eng = scan.nextInt(); if (eng < 0 || 100 < eng) System.out.println("영어성적은 0~100 까지의 범위만 입력 가능합니다."); } while (eng < 0 || 100 < eng); do { System.out.printf("수학:"); math = scan.nextInt(); if (math < 0 || 100 < math) System.out.println("수학성적은 0~100 까지의 범위만 입력 가능합니다."); } while (math < 0 || 100 < math); exam.kor = kor; exam.eng = eng; exam.math = math; } }
+
이번 강의의 목적은
국어, 영어, 수학을 입출력하는 프로그램을 만든다고 할 때, 구조체 형식으로 만드니깐 코드의 효율성이 더 좋습니다!
사용하는 사람은 모르지만, 구조화해서 만들면 알아보기가 쉽다는 장점이 있습니다!
오늘은 여기까지!
'JAVA' 카테고리의 다른 글
[JAVA]구조적 프로그래밍(5) (0) 2021.03.08 [JAVA]구조적 프로그래밍(4) (0) 2021.03.03 [JAVA]구조적 프로그래밍(2) (0) 2021.03.02 [JAVA]구조적 프로그래밍(1) (0) 2021.03.02 [JAVA] 배열의 중요성 (0) 2021.02.26