본문 바로가기
Language/JAVA

[JAVA]다차원 배열-학사관리시스템 실습(1)

by 바까 2020. 5. 11.
반응형

<다차원 배열 선언하기>

1) 타입[] [] 변수이름;
2) 타입 변수이름[] [];
3) 타입[] 변수이름[];  <--잘안쓰임

다차원(이차원)배열을 이용하여 점수의 총점, 평균을 나타내는 시스템을 구현해보았다. 

원래는 입력받는 값의 배열을 선언하여 점수를 입력 받아야 하지만, 아직은 입력 배열 선언은 배우지 않아 기본으로 점수가 세팅되어있는 배열을 선언한 뒤 정렬을 해볼 것 이다.

1)

 int[][] score= {{100,100,100},
    {20,20,20},{30,30,30},
    {40,40,40},{50,50,50}};//점수

5행 3열짜리 점수를 각각 넣어준다. 이건 후에 직접 점수값을 입력받아 배열에 넣는 것으로 변경 될 것이다.

2)

  System.out.println("번호  국어   영어   수학   총점   평균");//타이틀
  System.out.println("=======================");//구분표
  int i,j,k;
  int arr[]=new int[3];//과목별 총점을 넣을 배열

각 항목 제목을 출력해준다. 만들기 전에 제목도 함께 배열과 정렬하게 하는 방법이 있을까 싶었지만..따로 방법을 찾아보지 못 해서 일일히 공백으로 정렬해줬다.😅

반복문에 쓰일 변수도 미리 선언해줬다. 

또한 과목별 총점을 출력시킬 배열객체도 만들어준다.

3)

  for(i=0; i <score.length; i++){
            System.out.print(" " + (i + 1) + " ");//번호출력
            for(j=0;j < score[i].length;j++){ 
                arr[j]+=score[i][j];//과목별 총점
                System.out.printf("%4d",score[i][j]);//과목 점수 출력
                //sum+=score[i][j];//행별 총점구하기
            }
            int sum=0;//점수별 총점
            for(j=0;j < score[i].length;j++){ 
                sum+=score[i][j];//행별 총점구하기
            }
            System.out.printf("%4d",sum);//총점 출력하기
         
            System.out.printf("%6.1f",(float)(sum/score[i].length));
            System.out.println();
         //총점 나누기 과목갯수로 평균값 구하기
  }

바깥의 반복문 변수 i는 배열[i][]에 들어가며, 행에 대한 연산을 한다.

안쪽 반복문 변수 j는 배열[][j]에 들어가며, 열에 대한 연산을 한다.

 System.out.print(" " + (i + 1) + " ");//번호출력

i, 즉 행의 개수만큼 번호를 생성해준다.

for(j=0;j < score[i].length;j++){ 
                arr[j]+=score[i][j];//과목별 총점
                System.out.printf("%4d",score[i][j]);//과목 점수 출력
}

열은 행의 개수만큼 반복될 것이다.

배열을 그대로 출력해주고 자릿수 정렬을 위해 printf를 사용한다.

미리선언해두었던 과목별 총점은 열별로 더해야하므로 arr[j]변수에 누적한다.

4)

int sum=0;//점수별 총점
for(j=0;j < score[i].length;j++){ 
    sum+=score[i][j];//행별 총점구하기
}
System.out.printf("%4d",sum);//총점 출력하기
System.out.printf("%6.1f",(float)(sum/score[i].length));//총점 나누기 과목갯수로 평균값 구하기
System.out.println();//개행
         

5)

//과목별 총점 출력하기
System.out.print("총점:");
for(k=0;k<3;k++) {
   System.out.print(arr[k]+" ");
}

 


<전체소스코드>

//학사관리시스템(1)
public class Ex18 {

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  int[][] score= {{100,100,100},
    {20,20,20},{30,30,30},
    {40,40,40},{50,50,50}};//점수
  
  System.out.println("번호  국어   영어   수학   총점   평균");//타이틀
  System.out.println("=======================");//구분표
  int i,j,k;
  int arr[]=new int[3];//과목별 총점을 넣을 배열
  
  for(i=0; i <score.length; i++){
            System.out.print(" " + (i + 1) + " ");//번호출력
            for(j=0;j < score[i].length;j++){ 
                arr[j]+=score[i][j];//과목별 총점
                System.out.printf("%4d",score[i][j]);//과목 점수 출력
                //sum+=score[i][j];//행별 총점구하기
            }
            int sum=0;//점수별 총점
            for(j=0;j < score[i].length;j++){ 
                sum+=score[i][j];//행별 총점구하기
            }
            System.out.printf("%4d",sum);//총점 출력하기
         
            System.out.printf("%6.1f",(float)(sum/score[i].length));
            System.out.println();
         //총점 나누기 과목갯수로 평균값 구하기
  }
  System.out.println("=======================");
  //과목별 총점 출력하기
  System.out.print("총점:");
  for(k=0;k<3;k++) {
   System.out.print(arr[k]+" ");
  }
 }

}

<결과화면>

 


아직은...눈으로만 볼 때 다차원배열이 머리에 그려지지 않는다..디버깅표로 하나하나씩 짚고 넘어가야하는 수준..생각보다 수학머리가..많이 없다ㅏㅏㅏ...

반응형

댓글