JAVA_다차원 배열

승주😊·2021년 3월 23일
0

JAVA

목록 보기
2/7
post-thumbnail

배열🖌

  • 하나의 변수 이름 안에 여러 값들이 들어가 있는 것을 의미

[ 사용 방법 ]

  1. 배열 생성하는 법 📑

    int[] stu = new int[2];  // 또는 int[] stu1 = {1,2,3};
     System.out.prinln(stu[0]);
     System.out.println(stu[1]); 
    
  2. 배열 출력하는 법 📑

     for( int i=0; i < stu.length; i++){ // for문 사용
        System.out.println(stu[i]);
     }
    
     for(int v : stu){ //향상된 for문 == forEach 문 사용
        System.out.println(stu[v]); 
     }
     
     int k =0;
     while(k<stu.length){
         System.out.prinln(stu[k];
         k++;  
     }

    다차원 배열🖌

  • 다차원 배열 중 가장 많이 사용되는 2차원 배열은 행렬과 같은 구조를 가진다!
  • 1차원 배열만으로는 데이터 저장에 한계를 느낄때, 다차원 배열을 생성하여 데이터를 저장할 수 있다.
  • 예를 들어 여러 학생들의 영어, 수학 시험 점수를 저장하고 싶을 때, 2차원 배열을 생성하여 저장할 수 있다. ( 구조는 아래 그림과 같다.)

  • 이 경우 2차원 배열을 사용하지 않고, 1차원 배열을 여러개 선언하여 사용한다면 매우 비효율적이다. 따라서 2차원 배열을 통해 연관있는 데이터들을 관리하는 것이 좋다.

[ 사용 방법 ]

  1. 다차원 배열 생성하는 법 📑
/*  
*   다차원배열 
*   5명 학생들의 2번의 시험 점수를 각각 저장한다고 가정
*/
 int [][] stu = new int[5][2];  //이렇게 선언한 경우 내에는 0으로 기본값 설정
 // 앞의 []가 행의 개수를, 뒤의 []가 열의 개수를 의미한다고 생각!
  1. 다차원 배열에 값 넣는 법 📑
// stu[0][0] = 80; 이런식으로 대입 가능!

 for(int i=0;i<stu.length;i++) {
			System.out.println(i+1+"번 학생의 성적 입력중...");
			for(int j =0; j<stu[i].length;j++) {
			  System.out.println("시험"+(j+1)+"번 성적 채점중..");
			  stu[i][j] = rand.nextInt(101); //0~100번 중 랜덤 값 다차원 배열에 삽입
			  System.out.println(stu[i][j]+"점 입니다!");
			  System.out.println();
			}
			System.out.println();
		}
  1. 다차원 배열 출력하는 법📑
// System.out.println(stu[0][0]); 이런식으로 출력 가능!
for(int i=0;i<stu.length;i++) {
      System.out.println(i+1+"번 학생의 성적은...");
			for(int j =0; j<stu[i].length;j++) {
			  System.out.print(stu[i][j]+"점 입니다!");
			}
			System.out.println();
 }

다차원 배열을 이용한 예제 📚

  • 5명의 학생들의 2번의 시험점수가 각각 저장되어있다. 특정 학생의 찾고자하는 특정 시험 점수를 출력해주는 코드를 작성해보자. 단, 배열의 범위를 벗어난 학생이나 시험을 찾을 경우 다시 입력 받을 수 있도록 한다.
package Arr;
import java.util.Random;
import java.util.Scanner;

public class Test1 {

	public static void main(String[] args) {


		Random rand = new Random(); //ctrl +shift+o 누르면 해당 패키지 자동 입력
			
		int [][] stu = new int[5][2]; //다차원배열 생성
		
        // 시험 성적 채점 & 배열에 저장
		for(int i=0;i<stu.length;i++) {
			System.out.println(i+1+"번 학생의 성적 력중...");
			for(int j =0; j<stu[i].length;j++) {
				System.out.println("시험"+(j+1)+"번 성적 채점중..");
				stu[i][j] = rand.nextInt(101); //0~100번 중 
				System.out.println(stu[i][j]+"점 입니다!");
				System.out.println();
			}
			System.out.println();
		}
  
		// 몇번 학생의 몇번 시험 정적을 보시겠습니까?
		// 시험번호 입력:3
		// 시험 번호 입력:2
		
		Scanner sc = new Scanner(System.in); //입력을 위한 Scannner생성
	    int stuNum,testNum =0;
	    
		System.out.println("몇번 학생의 몇 번 시험 성적을 보시겠습니까?");
		do { // 잘못 입력시 재입력을 위한 do ~while문 사용
			System.out.print("학생 번호 입력:");
			stuNum = sc.nextInt();
			if(stuNum > stu.length) {
				System.out.println("잘못된 입력입니다.");
			}
		}while(stuNum>stu.length);
		
		do { // 잘못 입력시 재입력을 위한 do ~while문 사용
			System.out.print("시험 번호 입력:");
			testNum= sc.nextInt();
			if(testNum > stu[0].length) {
				System.out.println("잘못된 입력입니다.");
			}			
		}while(testNum>stu[0].length);
		
        //시험 성적 출력
		System.out.println(stuNum+"번 학생의 "+testNum+"번의 시험 성적은 "+ stu[stuNum-1][testNum-1]+"점 입니다.");
	
		sc.close();
		
	}
}
profile
All the Best❤

0개의 댓글