본문 바로가기
Java기초

[Java] 2,3차원배열 For문활용 + foreach문 활용 실습

by jackypark 2022. 6. 24.

성적관리 프로그램을 만들어보자

 *  사람의 성적처리 프로그램
 *  
 *  입력:이름,국어,영어,수학
 *  연산:총점,평균
 *  출력:이름,국어,영어,수학,총점,평균

public static void main(String[] args) {
		String name; //name
		int []score; //kor eng math total
		float avg;
		
		Scanner sc=new Scanner(System.in);
		
		score=new int[4];
		
		System.out.println("이름입력");
		name=sc.nextLine();
		System.out.println("국영수 순으로 성적 입력");
		for(int i=0;i<score.length-1;i++) {
			score[i]=sc.nextInt();
		}
		for(int i=0;i<score.length-1;i++) {
			score[3]+=score[i];
		}
		avg=score[3]/3.0f;
		System.out.print(name+":");
		for(int i=0;i<score.length;i++) {
			System.out.print(score[i]+",");
		}
   		//foreach 문 위식과 같은거임
//		for(int i:score) {
//			System.out.println(i);
//		}
		System.out.println(avg);
		
	}

이중 배열을 활용해서 3명의 성적처리 프로그램을 만들자

public static void main(String[] args) {
		String []name; //name
		int [][]score; //kor eng math total
		float []avg;
		
		Scanner sc=new Scanner(System.in);		
		name=new String[3];		
		score=new int[3][4];		
		avg=new float[3];
		//입력
		for(int i=0;i<name.length;i++) {
			System.out.println("이름입력");
			name[i]=sc.next();
			System.out.println("국영수 순으로 성적 입력");
			for(int j=0;j<score[i].length-1;j++) {
				score[i][j]=sc.nextInt();
			}			
		}
      //연산
		for(int i=0;i<score.length;i++) {
			for(int j=0;j<score[i].length-1;j++) {
				score[i][3]+=score[i][j];
			}			
		}		
		for(int i=0;i<avg.length;i++) {
			avg[i]=score[i][3]/3.f;
		}		
		//출력
		for(int i=0;i<name.length;i++) {
			System.out.print(name[i]+":");
			for(int j=0;j<score[i].length-1;j++) {
				System.out.print(score[i][j]+",");
			}
			System.out.print("총점:"+score[i][3]);
			System.out.println("평균:"+avg[i]);
		}		
	}

처음에 작성하고 성공한 코드이다 하지만 이 코드에 문제점이 보였다. 똑같은 반복문들이 반복돼서 코드가 길어 보였다. 그래서 수정하여 아래 코드처럼 고쳤다.

public static void main(String[] args) {
		String []name; //name
		int [][]score; //kor eng math total
		float []avg;
		
		Scanner sc=new Scanner(System.in);
        //메모리 할당
		name=new String[3];		
		score=new int[3][4];		
		avg=new float[3];
		//입력 &연산
		for(int i=0;i<name.length;i++) {
			System.out.println("이름입력");
			name[i]=sc.next();
			System.out.println("국영수 순으로 성적 입력");
			for(int j=0;j<score[i].length-1;j++) {
				score[i][j]=sc.nextInt();
				score[i][3]+=score[i][j];
			}
			avg[i]=score[i][3]/3.f;
		}	
		//출력
		for(int i=0;i<name.length;i++) {
			System.out.print(name[i]+":");
			for(int j=0;j<score[i].length-1;j++) {
				System.out.print(score[i][j]+",");
			}
			System.out.print("총점:"+score[i][3]);
			System.out.println("평균:"+avg[i]);
		}		
	}

3반 3명 성적처리

import java.util.Scanner;

/*
 *  사람의 성적처리 프로그램
 *  
 *  입력:이름,국어,영어,수학
 *  연산:총점,평균
 *  출력:이름,국어,양아,수학,총점,평균
 *  한반당 3명 3반
 *  
 *  1반 출력 3명
 */
public class Day3 {

	public static void main(String[] args) {
		String [][]name; //name
		int [][][]score; //kor eng math total
		float [][]avg;
		
		String[] schoolClass=new String[3];
		Scanner sc=new Scanner(System.in);
		
		String []subject= {"국어","영어","수학"};
		name=new String[3][3];		
		score=new int[3][3][4];		
		avg=new float[3][3];
		
		
		for(int k=0;k<name.length;k++) {
			//System.out.println(k+1+"반");
			System.out.println("반입력");
			schoolClass[k]=sc.next()+"반";	
			for(int i=0;i<name[k].length;i++) {				
				System.out.println("이름입력");
				name[k][i]=sc.next();
				System.out.println("국영수 순으로 성적 입력");
				for(int j=0;j<score[k][i].length-1;j++) {
					score[k][i][j]=sc.nextInt();
					score[k][i][3]+=score[k][i][j];
				}
				avg[k][i]=score[k][i][3]/3.f;				
			}
			
		}
		for(int k=0;k<name.length;k++) {
			System.out.println(schoolClass[k]);
			for(int i=0;i<name[k].length;i++) {
				System.out.print(name[k][i]+": ");
				for(int j=0;j<score[k][i].length-1;j++) {
					System.out.print(subject[j]+": "+score[k][i][j]+",");
				}
				System.out.print("총점:"+score[k][i][3]);
				System.out.println("평균:"+avg[k][i]);
			}
		}
	}		
}

총몇반 있는지 입력받고 그 반에서 또 몇명씩 있는지 입력받는다. (단 반명수가 반마다 다를수 있다)

import java.util.Scanner;

/*
 *  사람의 성적처리 프로그램
 *  
 *  입력:이름,국어,영어,수학
 *  연산:총점,평균
 *  출력:이름,국어,양아,수학,총점,평균

 */
public class Day3 {

	public static void main(String[] args) {
		String [][]name; //name
		int [][][]score; //kor eng math total
		float [][]avg;
		Scanner sc=new Scanner(System.in);
		
		String []subject= {"국어","영어","수학"};

		System.out.println("학교에 몇반있습니까?");
		int num=sc.nextInt(); //class 개수입력
		name=new String[num][];
		score=new int[num][][];
		avg=new float[num][];
		
		for(int k=0;k<name.length;k++) {
			System.out.println(k+1+"반은 몇명입니까");
			num=sc.nextInt();// 반별 인원 수 입력
			name[k]=new String[num];
			score[k]=new int[num][4];
			avg[k]=new float[num];
		}
		
		for(int k=0;k<name.length;k++) {
			System.out.println(k+1+"반 정보입력해주세요");
			for(int i=0;i<name[k].length;i++) {				
				System.out.println("이름입력");
				name[k][i]=sc.next();
				System.out.println("국영수 순으로 성적 입력");
				for(int j=0;j<score[k][i].length-1;j++) {
					score[k][i][j]=sc.nextInt();
					score[k][i][3]+=score[k][i][j];
				}
				avg[k][i]=score[k][i][3]/3.f;				
			}			
		}
		
		for(int k=0;k<name.length;k++) {
			System.out.println(k+1+"반");
			for(int i=0;i<name[k].length;i++) {
				System.out.print(name[k][i]+": ");
				for(int j=0;j<score[k][i].length-1;j++) {
					System.out.print(subject[j]+": "+score[k][i][j]+",");
				}
				System.out.print("총점:"+score[k][i][3]);
				System.out.println("평균:"+avg[k][i]);
			}
		}
	}		
}

 

댓글