ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA]구조적 프로그래밍(3)
    JAVA 2021. 3. 3. 15:09

    안녕하세요!

     

    이번에도 자바의 구조적 프로그래밍에 대해 알아보도록 할게요~ 

     

    이번에는 코드를 사용하여 직접적으로 사용해보겠습니다

     

    위 글또한 뉴렉처님 강의를 바탕으로 작성합니다. 

    ( 다같이 따라해봐요 :) )

     

     드가자~~

    1. 패키지를 불러옵시다
    2.Exam 클래스에서 데이터 형태를 넣습니다.
    3. 오류가 발생한다.

    3. 에서 오류가 발생하는 이유는 exam이 가르키는것이 null 이기 때문에

    참조형식인 exam 은 new를 통해 만든 객체를 대입해야한다! 

    아래처럼!

    4. 오류 해결~

    4. 여기서 Exam은 2에서 만든 Exam의 class를 의미한다.

          exam의 이름은 다른 것을 사용해도 된다!

    ex)   Exam roro = new Exam();

           roro.kor = 30; 

     

     

     

    자, 그럼 준비운동은 끝났습니다! 이제 성적을 입력받고 출력하는 것을 함수로 만들어 보겠습니다! 

    무야호~ 신난당

     

    5. 함수 생성!

    5.  입력함수와 출력함수를 작성하였고, input(exam); 은 exam을 통해 new Exam()을 참조한다는 뜻입니다!

    6.함수 불러오기

    6. input(exam), print(exam) 함수 생성! 그리고 반환이 없기 때문에 void를 사용합니다! 

     

    7. 성적출력 로직

    7.  input함수에서 국어,영어,수학점수를 출력하는 로직을 구현했습니다.

    여기서 좀 아쉬운점이 있습니다. 바로 exam.kor, exam.eng, exam.math 등  .이 연산자이기 때문에 이를 줄여준다면

    좋은 코딩이 될것 같습니다.

    윙가디움 레비오우사~
    8.임시변수를 사용해 불필요한 연산을 줄였다

     

     

    다음으로 성적 입력 함수로직을 짜보겠습니다!

     

     

    9. 성적입력 로직

    9. 프린트 함수입니다.    Scanner scan = new Scanner(System.in); 을 통해

    Scanner를 불러오고  변수 kor, eng, math를 선언!

    do while을 이용해 국어점수가 0점 보다 낮거나 100점 초과를 입력할 경우 계속 반복되게 입력합니다.

    위의 조건을 빠져나온 kor 점수를 exam.kor 에 담습니다!

     

     

    우리가 할 것은 국어성적뿐 아니라 영어, 수학성적까지 완성하는 것이기 때문에 똑같은 방법으로 완성해줍시다!

    10.  수학성적 로직

    영어는 한번 해보시길 바랍니다!

     

    최종 로직!

    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;
    
    	}
    
    }
    

     

    +

    class Exam

     

    이번 강의의 목적은 

    국어, 영어, 수학을 입출력하는 프로그램을 만든다고 할 때, 구조체 형식으로 만드니깐 코드의 효율성이 더 좋습니다!

     

    사용하는 사람은 모르지만, 구조화해서 만들면 알아보기가 쉽다는 장점이 있습니다!

     

    오늘은 여기까지! 

    '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

    댓글

Designed by Tistory.