반응형
<다차원 배열 선언하기>
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]+" ");
}
}
}
<결과화면>
아직은...눈으로만 볼 때 다차원배열이 머리에 그려지지 않는다..디버깅표로 하나하나씩 짚고 넘어가야하는 수준..생각보다 수학머리가..많이 없다ㅏㅏㅏ...
반응형
'Language > JAVA' 카테고리의 다른 글
[JAVA]클래스(Class) (0) | 2020.06.08 |
---|---|
advenced for문 (0) | 2020.05.12 |
[JAVA]가위바위보 게임 (0) | 2020.05.07 |
[JAVA]수열 합계 알고리즘(do~while문 + if문)3:플러그변수 (0) | 2020.05.06 |
[JAVA]수열합계 구하기 알고리즘(do~while문)2 (0) | 2020.05.06 |
댓글