모든지 기록하자!

[Java] 배열을 이용한 성적 처리 프로그램 본문

Java

[Java] 배열을 이용한 성적 처리 프로그램

홍크 2021. 5. 11. 19:46
728x90

한 사람의 성적 처리 프로그램

코드를 구현하기 전에 미리 구현할 기능들을 나눠 본다

public class ScoreEx {

	public static void main(String[] args) {	

	// 한사람의 성적 처리 프로그램
		
	// 입력 : 이름,국어,영어,수학
	// 연산 : 총점, 평균
	// 출력 : 이름 , 국어 , 영어 , 수학 , 총점, 평균

	String name; //이름 변수
	int []score; //성적 변수 
	float avg; //총점 변수
				
	//메모리할당
		
	score = new int[4];
		
	// 입력 구현
	Scanner sc = new Scanner(System.in);
		
	System.out.println("이름을 입력하세요");
	name = sc.next(); //이름 입력받기
		
	System.out.println("국어, 영어, 수학 성적을 차례대로 입력하세요");
		
	for(int i=0;i<score.length-1;i++) { //length-1 하는 이유는 [3]은 총점이기때문
		score[i] = sc.nextInt(); // 성적입력받기
		score[3] += score[i]; // score[0],[1],[2] 의 합을 score[3]에 대입
	}
		avg = score[3]/3.f;  //총점 나누기 과목수 3 해서 평균 산출
		
		
	// 출력 구현
	System.out.println(name);
		
	String []str = {"국어","영어","수학","총점"};
		
	for(int i=0;i<score.length;i++) {
		System.out.println(str[i]+" : "+score[i]);
			
	}
	System.out.println("평균 : "+avg);
}

}

이번 예시의 장점은 뒤에 배울 내용들을 성적 처리 프로그램에 적용해서 변형시킬 수 있다.

 

 


 

2차원 배열을 사용한 여러 명의 성적처리 프로그램

public class Practice03 {

	public static void main(String[] args) {

		// 여러명의 성적 처리 프로그램
		// 학생수 입력 : 숫자입력 
		
				// 입력 : 이름,국어,영어,수학
				// 연산 : 총점, 평균
				// 출력 : 이름 , 국어 , 영어 , 수학 , 총점, 평균
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("학생 수를 입력하세요");
		int num = sc.nextInt();
		
		//메모리할당 함수
		String []name = new String[num]; // 학생수에 따른 이름변수
		int [][]score = new int[num][4]; // 학생수에 따른 점수배열
		float []avg = new float[num]; // 학생수에 따른 평균배열
		
		//기능구현 (입력)
		System.out.println("학생 이름과 국,영,수 성적을 차례로 입력하세요");
		for(int i=0;i<num;i++) {
			name[i] = sc.next(); //이름입력받기
			for(int j=0;j<3;j++) { // i는 학생이름 j[0]=국어, j[1]=영어, j[2]=수학, j[3]=총점
				score[i][j] = sc.nextInt(); // i번째 학생에게 성적입력
				score[i][3] += score[i][j]; // 입력받은 성적을 총점 산출
			}
			avg[i] = score[i][3] / 3.f; //i번째 학생의 총점/3 으로 평균 산출
			
		}
       	 //출력하기
		for(int i=0;i<num;i++) { 
			System.out.println(name[i]); 
			for(int j=0;j<4;j++) {
				System.out.println(score[i][j]); //i번째 학생의 성적 출력후 i는 1증가하여 
                						//다음학생 성적출력
			}
			System.out.println(avg[i]);
			System.out.println("======================");
		}
	}

}

 

 


 

간단한 함수로 기능을 나누어서 구현한 성적 처리 프로그램

public class CallbyReference {

	public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

CallbyReference se = new CallbyReference(); //객체생성

		
		System.out.println("학생수를 입력하세요");
		int num = sc.nextInt();
		
		
		//메모리할당 함수
		String [] name = new String[num]; //학생배열
		int [][]score = new int[num][4]; // 점수배열 [학생수][4]
		float []avg = new float[num]; // 학생수에 따라 총점 배열이 달라짐
		
		
		//기능구현 (입력 , 출력)
		se.input(name,score,avg,num,sc);
		se.disp(name,score,avg,num);
	
	}
	public void input(String []name,int [][]score,float []avg,int num, Scanner sc) {
		System.out.println("학생 이름과 국,영,수 성적을 차례로 입력하세요");
		for(int i=0;i<num;i++) {
			name[i] = sc.next();
			
			for(int j=0;j<3;j++) {
				score[i][j] = sc.nextInt();
				score[i][3] += score[i][j];
			}
			avg[i] = score[i][3]/3.f;
		}
		
	}
	public void disp(String []name,int [][]score,float []avg,int num) {
		for(int i=0;i<num;i++) {
			System.out.println(name[i]+"\t"); 
			
			for(int j=0;j<4;j++) {
				System.out.println(score[i][j]+"\t"); 
			}
			System.out.println(avg[i]);
			System.out.println("====================");
		}
	}
	}
728x90
Comments