반응형
석차 과목별 평균 합계 구하기
package d_array;
public class Array_03 {
public static void main(String[] args) {
/*
1. 다차원 배열
- 자바에서는 1차원 배열뿐만 아니라 2차원 이상의 다차원 배열도 허용한다.
- 선언
int[][] arr
int[] arr[];
int arr[][];
- 이차원 배열의 생성
*/
int[][] score = new int[][]{
{1,2},
{3,4,6},
{7,8,9,0}
};
int[][] score2 = new int[3][];
score2[0] = new int[3];
score2[1] = new int[4];
score2[2] = new int[2];
//{
//{0,0,0},
//{0,0,0,0},
//{0,0}
//}
//for (int count = 0; count < score2[0].length ; count++){
//System.out.println(score2[0][count]);
//}
//for (int count = 0; count < score2[1].length; count++) {
//System.out.println(score2[1][count]);
//}
//for(int count=0; count<score2[2].length;count++){
//System.out.println(score2[2][count]);
//}
// 시작 : 0 끝 : 2 증가량 : 1
for(int i = 0;i<score2.lengthi++){
for(int count=0; count<score2[i].lengthcount++){
System.out.println(score2[i][count]);
}
}
//score2.length = > 3
//score2[1].length=>4
//3. 주변사람 6명의 이름을 저장해주세요 name
String[] name ={"이혜인","박대현","김범수","이유진","임기원","김찬기","정윤도","김재형"};
//4. 7과목의 이름을 저장해주세요 subject
String[] subject = {"국","영","수","사","과","Oracle","Java"};
//1. 6명의 7과목의 성적을(정수)를 저장할수 있는 변수 sungjuk을 선언및 생성해주세요
int[][] sungjuk = new int[name.length][subject.length];
//2. sungjuk의 각방을 0~100점사이의 랜덤한 정수값을 저장해주세요
for (int i = 0; i < sungjuk.length i++) {
for (int j = 0; j < sungjuk[i].length j++) {
sungjuk[i][j] = (int)(Math.random()*101);
}
}
//5. 사람별 합계를 구해주세요 nameSum
int[] nameSum = new int[name.length];
for (int i = 0; i < sungjuk.length i++) { //
for (int j = 0; j < sungjuk[i].length j++) {
nameSum[i] += sungjuk[i][j];
}
}
//6. 사람별 평균을 구해주세요 nameAvg
float[] nameAvg = new float[name.length];
for (int i = 0; i < nameAvg.length i++) {//
nameAvg[i] = (int)((float)nameSum[i]/sungjuk[i].length*100+0.5)/100f;
}
//7. 과목별 합계를 구해주세요 subSum
int[] subSum = new int[subject.length];
for (int i = 0; i < subject.length i++) {
for (int j = 0; j < name.length j++) {
subSum[i] += sungjuk[j][i];
}
}
//8. 과목별 평군을 구해주세요 subAvg
float[] subAvg = new float[subject.length];
for (int i = 0; i < subAvg.length i++) {
subAvg[i] = (int)((float)subSum[i]/name.length*100+0.5)/100f;
}
//9. 석차를 구해주세요 rank
int[] rank = new int[name.length];
for (int i = 0; i < name.length i++) { //랭크를 구할사람
rank[i]++;
for (int j = 0; j < name.length j++) { // 비교할사람
if(nameSum[i] < nameSum[j]){
rank[i]++;
}
}
}
//0. 아래와 같이 출력해주세요
for (int i = 0; i < subject.length i++) {
System.out.print("\t"+subject[i]);
}
System.out.println("\t합계\t평균\t석차");
for (int i = 0; i < sungjuk.length i++) {
System.out.print(name[i]+"\t");
for (int j = 0; j < sungjuk[i].length j++) {
System.out.print(sungjuk[i][j]+"\t");
}
System.out.println(nameSum[i]+"\t"+nameAvg[i]+"\t"+rank[i]);
}
System.out.print("과목합계\t");
for (int i = 0; i < subSum.length i++) {
System.out.print(subSum[i]+"\t");
}
System.out.println();
System.out.print("과목평균\t");
for (int i = 0; i < subAvg.length i++) {
System.out.print(subAvg[i]+"\t");
}
System.out.println();
//select sort
for (int i = 0; i < name.length-1; i++) {
int max = nameSum[i];
int maxBang = i;
for (int j = i+1; j < name.length j++) {
if(max < nameSum[j]){
max = nameSum[j];
maxBang=j;
}
}
int sumTemp = nameSum[i];
nameSum[i] = nameSum[maxBang];
nameSum[maxBang] = sumTemp;
float avgTemp = nameAvg[i];
nameAvg[i] = nameAvg[maxBang];
nameAvg[maxBang] = avgTemp;
int rankTemp = rank[i];
rank[i] = rank[maxBang];
rank[maxBang] = rankTemp;
String nameTemp = name[i];
name[i] = name[maxBang];
name[maxBang] = nameTemp;
for (int k = 0; k < subject.length k++) {//k= 과목
int temp = sungjuk[i][k];
sungjuk[i][k] = sungjuk[maxBang][k];
sungjuk[maxBang][k] = temp;
}
}
System.out.println("====================== sort 후 ===========================");
for (int i = 0; i < subject.length i++) {
System.out.print("\t"+subject[i]);
}
System.out.println("\t합계\t평균\t석차");
for (int i = 0; i < sungjuk.length i++) {
System.out.print(name[i]+"\t");
for (int j = 0; j < sungjuk[i].length j++) {
System.out.print(sungjuk[i][j]+"\t");
}
System.out.println(nameSum[i]+"\t"+nameAvg[i]+"\t"+rank[i]);
}
System.out.print("과목합계\t");
for (int i = 0; i < subSum.length i++) {
System.out.print(subSum[i]+"\t");
}
System.out.println();
System.out.print("과목평균\t");
for (int i = 0; i < subAvg.length i++) {
System.out.print(subAvg[i]+"\t");
}
System.out.println();
}
}
반응형
'it공부 > Java' 카테고리의 다른 글
Scanner 사용 ,for문, while문 변환, do-while예제정리 (0) | 2020.07.05 |
---|---|
배열 정렬 : 자바의정석 연습문제 (0) | 2020.07.05 |
Java 카드게임 변수 (0) | 2020.07.05 |
8가지 기본형 저장가능한 값의 범위 (0) | 2020.07.05 |
자바의정석 예제 자동차 Car Test (0) | 2020.07.05 |