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