자바-8일차(2) 이클립스

최성현·2023년 6월 26일
0

Java

목록 보기
13/46

2차원배열

int 배열이름 [][];
배열이름=new int[갯수1][갯수2] //갯수1: 행 갯수2: 열(row,column)

초기값 각각 설정해줘야함

System.out.println("행의 갯수: "+arr.length); //행의 갯수만

//열의갯수
//행의 i번째 길이로 열의 갯수 구할 수 있음
System.out.println("0행의 열갯수: "+arr[0].length); 0행의 열갯수
System.out.println("1행의 열갯수: "+arr[1].length); 1행의 열갯수

for(int i=0;i<arr.length;i++)=>행 갯수
{
for(int j=0;j<arr[i].length;j++) => arr[i]가 행의 i번째 열
{
//System.out.print(arr[i][j]+"\t");
System.out.printf("%d,%d=%2d\t",i,j,arr[i][j]);

}
System.out.println();
}

public static void main(String[] args) {
		
		int [][]arr;
		arr=new int[2][3]; //2행 3열로 할당(row,column)
		
		//초기값
		arr[0][0]=10;
		arr[0][1]=20;
		arr[0][2]=30;
		
		arr[1][0]=5;
		arr[1][1]=10;
		arr[1][2]=20;
		
		System.out.println("행의 갯수: "+arr.length); //행의 갯수만
		
		//열의갯수
		//행의 i번째 길이로 열의 갯수 구할 수 있음
		System.out.println("0행의 열갯수: "+arr[0].length);
		System.out.println("1행의 열갯수: "+arr[1].length);
		
		System.out.println("***데이터 출력***");
		for(int i=0;i<arr.length;i++)
		{
			//arr[i]가 행의 i번째
			for(int j=0;j<arr[i].length;j++)
			{
				//System.out.print(arr[i][j]+"\t");
				System.out.printf("%d,%d=%2d\t",i,j,arr[i][j]);
			}
			System.out.println();
		}
		
		System.out.println("2차원 배열의 값을 변경 후 다시 출력");
		
		arr[0][1]=1000;
		arr[1][0]=2000;
		arr[1][2]=3000;
		
		System.out.println("***데이터 출력***");
		for(int i=0;i<arr.length;i++)
		{
			//arr[i]가 행의 i번째
			for(int j=0;j<arr[i].length;j++)
			{
				//System.out.print(arr[i][j]+"\t");
				System.out.printf("%d,%d=%2d\t",i,j,arr[i][j]);
			}
			System.out.println();
		}

	}

2차원배열-행마다 열갯수가 다를 경우

int arr[][]= {
{22,33},
{11,22,33},
{10,20,30,40}
};
=> 2차원배열의 경우 구분하기 쉽게 행마다 내려서 값 선언

System.out.println("총 행 갯수: "+arr.length);
System.out.println("0번행의 열갯수: "+arr[0].length);//0행의 열갯수
System.out.println("0번행의 열갯수: "+arr[1].length);//1행의 열갯수
System.out.println("0번행의 열갯수: "+arr[2].length);//2행의 열갯수

public static void main(String[] args) {
		
		//행마다 열 갯수가 다른 경우
		int arr[][]= {
				{22,33},
				{11,22,33},
				{10,20,30,40}
				};
		
		System.out.println("총 행 갯수: "+arr.length);
		System.out.println("0번행의 열갯수: "+arr[0].length);//0행의 열갯수
		System.out.println("0번행의 열갯수: "+arr[1].length);//1행의 열갯수
		System.out.println("0번행의 열갯수: "+arr[2].length);//2행의 열갯수
		
		//for문으로 출력
		for(int i=0;i<arr.length;i++) //행
		{
			for(int j=0;j<arr[i].length;j++) //열
			{
				System.out.printf("%d,%d=%2d\t",i,j,arr[i][j]);
			}
			System.out.println(); //0, 1, 2 행 내려갈 때마다 줄 내려줌
		}

	}

빙고게임

public static void main(String[] args) {
		
		Scanner sc=new Scanner(System.in);
		
		//3행3열 배열 생성
		int pz[][]=new int[3][3];
		
		int bingo=0; //빙고 갯수 담기
		
		
		while(true)
		{
			System.out.println("***같은 숫자 나오면 빙고!!!***");
			
			
			//3행3열안에 1~3까지의 난수 발생
			for(int i=0;i<pz.length;i++) //행
			{
				for(int j=0;j<pz[i].length;j++) //열
				{
					pz[i][j]=(int)(Math.random()*3)+1;
				}
			}
			
			//출력
			for(int i=0;i<pz.length;i++) //행
			{
				for(int j=0;j<pz[i].length;j++) //열
				{
					System.out.printf("%4d",pz[i][j]);
				}
				System.out.println();
			}
			
			
			//빙고갯수
			bingo=0; //빙고 갯수 초기화
			
			//가로방향 3개, 세로방향 3개
			for(int i=0;i<pz.length;i++)
			{
				//가로방향비교
				if(pz[i][0]==pz[i][1] && pz[i][1]==pz[i][2])
					bingo++;
				
				//세로방향비교
				if(pz[0][i]==pz[1][i] && pz[1][i]==pz[2][i])
					bingo++;
			}
			//대각선 \방향
			if(pz[0][0]==pz[1][1] && pz[1][1]==pz[2][2])
				bingo++;
			
			//대각성 /방향
			if(pz[0][2]==pz[1][1] && pz[1][1]==pz[2][0])
				bingo++;
			
			//빙고출력
			if(bingo==0)
				System.out.println("\t꽝!!!");
			else
				System.out.println("\t빙고 갯수: "+bingo+"개");
			
			
			//게임종료
			System.out.println("엔터를 누르면 다음 난수가 나옵니다(q: 종료)");
			String ans=sc.nextLine();
			
			if(ans.equalsIgnoreCase("q"))
			{
				System.out.println("게임을 종료합니다");
				break;
			}
		
		}

	}
profile
백엔드 개발자로서 성장해 나가는 성현이의 블로그~

0개의 댓글