ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 배열
    Java 2021. 11. 22. 15:09

    1차원 배열

     

     

     

     

     

    2차원배열

     

    • 성적처리

    import java.util.Scanner;
    
    public class ArrayEx03Score {
    		public static void main(String[] args) {
    			while(true) {
    				
    			
    				Scanner sc = new Scanner(System.in) ;
    		
    				System.out.print("학생수=");
    				int cnt = Integer.parseInt(sc.nextLine());
    				
    				// 이름, 점수를 저장할 배열
    				String nameArr[] = new String[cnt];
    				int scoreArr[][] = new int[cnt+2][6];
    				
    				// 점수 입력 시 메시지 사용할 제목
    				String msg[] = {"국어", "영어", "수학", "총점", "평균", "석차"};
    				
    				
    				// 데이터준비
    				for(int i=0; i<cnt; i++) {
    					System.out.print("학생이름=");
    					nameArr[i] = sc.nextLine(); 
    					
    					for(int j=0; j<=2; j++) {
    						System.out.print(msg[j]+"=");
    						scoreArr[i][j] = Integer.parseInt(sc.nextLine());
    					}
    				}
    				
    				// 개인별 총점, 평균, 과목별 총점
    				for(int i=0; i<cnt; i++) {  // i행 j열이 각 개인의 과목별 점수
    					for(int j=0; j<=2; j++) {
    						// 개인별 총점
    						scoreArr[i][3] += scoreArr[i][j];
    						// 과목별 총점
    						scoreArr[cnt][j] += scoreArr[i][j];
    					}
    					// 개인별 평균
    					scoreArr[i][4] = scoreArr[i][3]/3;
    				}
    				
    				// 과목별 평균
    				for(int c=0; c<3; c++) {
    					scoreArr[cnt+1][c] = scoreArr[cnt][c]/cnt;
    				}
    				
    				// 석차 구하기
    				for(int r=0; r<cnt; r++) {      // r=0
    					for(int c=0; c<cnt; c++) {  // c=0,1,2,3,4
    						//        내 총점  <  상대방 총점   
    						if(scoreArr[r][3]<scoreArr[c][3]) {
    							scoreArr[r][5] += 1;  // 나보다 점수가 높은사람이 카운팅됨
    						}
    					}
    					scoreArr[r][5] += 1;  // 내 석차는 나보다 점수가 높은 사람 명수의 +1
    				}
    				
    				// 석차순으로 정렬
    				for(int r=0; r<cnt-1; r++) {
    					for(int r2=0; r2<cnt-1-r; r2++) {  // 0,1,2,3
    						if(scoreArr[r2][5] > scoreArr[r2+1][5]) {
    							// 데이터 교환
    							// 1.이름
    							String temp = nameArr[r2];
    							nameArr[r2] = nameArr[r2+1];
    							nameArr[r2+1] = temp;
    							
    							// 2.성적
    							for(int c=0; c<scoreArr[r2].length; c++) {
    								int tempInt = scoreArr[r2][c];
    								scoreArr[r2][c] = scoreArr[r2+1][c];
    								scoreArr[r2+1][c] = tempInt;
    							}
    									
    						}
    					}
    				}
    				
    				
    				///// 출력 /////
    				for(int k=0; k<scoreArr.length; k++) { // k=0,1,..5
    					if(k<cnt) { //이름
    						System.out.print(nameArr[k] +"\t");
    					}else if(k==cnt) { //총점
    						System.out.print("총점\t");
    					}else if(k==cnt+1) { //평균
    						System.out.print("평균\t");
    					}
    					// 점수 출력
    					for(int c=0; c<scoreArr[k].length; c++) {
    						System.out.print(scoreArr[k][c]+"\t");
    						
    					}
    					System.out.println();
    					
    				}
    				System.out.print("계속하려면 아무 키나 누르십시오");
    				String ans = sc.nextLine();
    				if(ans!=" ") continue;
    		}
    	}
    }

    'Java' 카테고리의 다른 글

    객체지향 퀴즈  (0) 2021.11.24
    객체지향프로그래밍 (자바의정석)  (0) 2021.11.22
    정렬알고리즘  (0) 2021.11.22
    do-while문  (0) 2021.11.22
    for문/while문/switch문  (0) 2021.11.21

    댓글

Designed by Tistory.