본문 바로가기

DATA 분석 교육 과정 (2024.02~08)/JAVA

JAVA_배열, for-each, 이차배열

728x90

 

배열

 

  1. 자료구조: 

  - Tree: 가지구조 

  - Stack : last in first in (프링글스)

  -  Queue :  first in first out  (빨대와 같은)

  -  List

  -  Array : 같은 타입의 여러 변수를 하나의 묶음으로 다루는 자료구조

 

  2. 배열 ( Array )

  -   int [  ] numbers =  new int [3] ;

  -  타입 / 선언 / 배열 이름  = 생성 키워드 / 타입 [배열의 크기] ;

배열선언 방법 1

 

       int [] arr ; // 변수 선언, 주소가 담긴다. 
		arr = new int [3]; //배열을 선언
		System.out.println(arr); // 주소값 출력
		
	    arr[1]=20;
	    System.out.println(arr[1]); // 20 출력
		
		
		int[] temarr = arr;
		temarr[1] = 15;
		System.out.println(temarr[1]); // 15출력
		System.out.println(arr[1]); // 15 출력>> temarr 주소와 같기 때문데

 

 

배열선언 방법 2

 

 

 

 

        int[] array = {1,,46,3,7,8,2,3,7};
		for( int i= 0; i<array. length; i++) {
			System.out.println(array[i]);
		}
for-each

 

배열의 크기

  - 배열의 크기는 배열 레퍼런스 변수를 선언할 때 결정되지 않음

  - 배열의 크기는 배열 생성 시에 결정되며, 나중에 바꿀 수 없음(고정적)

  - 배열의 크기는 배열의 length라는 공간에 저장

배열속 최대, 최소값 구하기 

 

    점수 중에 최대, 최소 값 구하는 방법

        Scanner sc = new Scanner(System.in);
		
		// 1. 점수를 저장할 수 있는 배열 생성
		int[] score = new int[5];
		
		// 2. 성적 입력 받기
		System.out.print("1번째 입력>>");
		score [0] = sc. nextInt();
		
		  // 2-1 반복문으로 작성하기 
		
		for(int i =0; i<score.length; i++) {
			System.out.print((i+1)+"번째 입력>>");
			score[i] = sc.nextInt()	;
			}
			
		// 3.배열에 들어 있는 데이터 전부 출력하기
		System.out.println("입력된 점수 : "+Arrays.toString(score)); // import Arrays 확인하기
		
		// 4. 최고, 최저, 총합 점수를 저장할 수 있는 변수 선언하기 
		int max = 0;
		int min = 0;
		int sum = 0;
		
		// 5. 배열 안에 모든 데이터와 max/min 비교하면서 최고 점수 정하기 
		if(max<score[0]) {
			max=score[0];
		}
		if(max<score[1]) {
			max=score[1];
		}
		if(max<score[2]) {
			max=score[2];
		}	   
		   //5-1 for문으로 정리하기   		
		for(int i=0; i<score.length ; i++) {
			max= score[i];
		}
		System.out.println("최고점수"+max);
		
		// 6. 총합 구하기 
		sum += score[i];//= sum = sum+score[i]

 

 

연습

 1) 홀수 찾기 

  - 정수형 데이터 5개를 저장할 수 있는 배열 array를 선언하세요.

  - 배열 안의 모든 데이터를 임의의 값으로 초기화하세요.(1~100까지의 수)

  - 배열 안의 데이터 중 홀수의 값만 출력하고 ,총 몇 개인지 출력하세요.

	// 1. 배열 생성
		Scanner sc = new Scanner(System.in);
		int [] array = new int[5];
		Random ran = new Random();
		
	// 2. 램덤한 값으로 배열 초기화	
		for(int i=0; i<array.length; i++) {
			array[i] = ran. nextInt(100) +1;
			
		// 2-1. 홀수인 수만 값으로 넣기위해
          if(array[i]%2==1) {
        	  System.out.println(array[i]+" ");
          }
			}
		
	// 3. 총 정리		
		int count = 0; // 홀수를 갯수를 확인하기 위해 변수 설정
		System.out.println("array에 들어 있는 홀수는");
		  for(int i=0; i<array.length; i++) {
           if(array[i]%2==1) {
        	  System.out.println(array[i]+" ");
        	  count++; // 홀수인 경우에만 1씩 증가
          }
			}
		System.out.println("이며, ");
		System.out.println("총"+count+"개 입니다.");

 

 2) 로또 번호 추첨 (중복수 제거 for문 만들기)

  - 정수형 데이터 5개를 저장할 수 있는 배열 array를 선언하세요.

  - 배열 안의 데이터를 모두 임의의 값으로 초기화하세요.(1~10까지의 수)

  - 단, 배열에 중복된 값을 제거해주세요.

  - 배열 안의 데이터를 모두 출력해주세요.

		//1. 램덤 생성
		Random ran = new Random()
		
		//2. 배열 만들기 
		 int [] lotto = new int[5];		
		
		//3. lotto의 0번방 데이터를 랜덤수로 넣기 
		// ran. nextInt(10)+1; // 랜덤 도구를 이용해서 10개의 숫자를 뽑고 0부터 시작하니 1씩 더해준다. 
		lotto[0] = ran. nextInt(10)+1; 
		
		//4. lotto의 1번방 데이터를 랜덤수로 넣기 
		lotto[1] = ran. nextInt(10)+1; 
		   //4-1 중복제거하기 (0번방과 1번방 동일한지 확인)
		    if(lotto[0]==lotto[1]) {  // 0번 방과 1번 방이 같으면 1번에 다시 새로운 숫자 넣을거야)
		    	lotto[1] = ran. nextInt(10)+1; 
		    }
		
		 //5. lotto의 2번방 데이터를 랜덤수로 넣기 
		 lotto[2] = ran. nextInt(10)+1;  
		    //5-1 중복제거하기 (0번방과 2번방과 동일한지 확인)
		     if(lotto[0]==lotto[2]) {  // 0번 방과 2번 방이 같으면 1번에 다시 새로운 숫자 넣을거야)
		    	lotto[2] = ran. nextInt(10)+1; 
		    }
		     //5-2 중복제거하기 (1번방과 2번방과 동일한지 확인)
		     if(lotto[1]==lotto[2]) {  // 0번 방과 2번 방이 같으면 1번에 다시 새로운 숫자 넣을거야)
		    	 lotto[2] = ran. nextInt(10)+1; 
		     }
		
		 //6. 규칙찾기
		    //6-1 if문(중복) 규칙 찾기    
		   
		       //4-1 중복제거하기 (0번방과 1번방 동일한지 확인)
			    if(lotto[0]==lotto[1]) {  // 0번 방과 1번 방이 같으면 1번에 다시 새로운 숫자 넣을거야)
			    	lotto[1] = ran. nextInt(10)+1; 
			    }
		          // ★ for문으로 정리  
			       for(int i=0; i<1 ; i++) {
				    if(lotto[i]==lotto[1]) {
					 lotto[1]=ran.nextInt(10)+1;
			         }
			        }
			    			    						      
			    //5-1 중복제거하기 (0번방과 2번방과 동일한지 확인)
			     if(lotto[0]==lotto[2]) {  // 0번 방과 2번 방이 같으면 1번에 다시 새로운 숫자 넣을거야)
			    	lotto[2] = ran. nextInt(10)+1; 
			    }
			     //5-2 중복제거하기 (1번방과 2번방과 동일한지 확인)
			     if(lotto[1]==lotto[2]) {  // 0번 방과 2번 방이 같으면 1번에 다시 새로운 숫자 넣을거야)
			    	 lotto[2] = ran. nextInt(10)+1; 
			     }		     		     			     		 
	               // ★for문으로 정리	   
			     for(int i=0; i<2; i++) {
				   if(lotto[i]==lotto[2]) {
					   lotto[2] =  ran.nextInt(10)+1;
				   }
			   }
			     
			 // 중복문 제거-for문 최종정리 과정  
			     lotto[1] = ran. nextInt(10)+1;
			     for(int i=0; i<1 ; i++) {
					    if(lotto[i]==lotto[1]) {
						 lotto[1]=ran.nextInt(10)+1;
				         }
				        }  
			     
			     lotto[2] = ran. nextInt(10)+1;
			     for(int i=0; i<2; i++) {
					   if(lotto[i]==lotto[2]) {
						   lotto[2] =  ran.nextInt(10)+1;
					   }
				   }
		     
			// ★★for문 최종정리 (랜덤수 넣기+중복제거 for문 통합)
			     
			     for(int k=0; k<lotto.length; k++) {
			     lotto[k] = ran. nextInt(10)+1; //   랜덤 수 넣기 
			       for(int i=0; i<k; i++) {
					   if(lotto[i]==lotto[k]) {
						   k--; // 중복된 숫자가 있을 경우 다시 인덱스 번호 앞으로 보내기
						   break; // 만약 중복수가 있을 경우 멈추고 for문으로 되돌아 갈거임
					   }
				   }	    			     
			     }
			     
		//7.랜덤수 나열하기
			     System.out.println(Arrays.toString(lotto));

 


이차배열

 

      int [] ab = new int [5] ;
	  int [] cd = new int [5] ;
	  int [] ef = new int [5] ;
	  
	  int [][] score = new int [3][5]; // 행, 열
      /////////////////////////////////////////
      
      
      int [] ab = new int [2] ;
	  ab[0] = 90;
	  ab[1] = 85;
	  int [] cd = new int [2] ;
	  cd[0] = 57;
	  cd[1] = 60;
	  int [] ef = new int [2] ;
	  ef[0] = 13;
	  ef[1] = 14;
	 
	  int [][] score = new int [3][2]; // 행, 열
	    score [0][0]=90;
        score [0][1]=85;
	    score [1][0]=57;
	    score [1][1]=60;
        score [2][0]=13;
        score [2][1]=14;

 

 

	 ///////// for문 이용해서 score값 출력하기 /////////
	 
	/// 1단계 : 반복되는 규칙 찾기 
	System.out.println(score [0][0]);
	System.out.println(score [0][1]);
	System.out.println(score [1][0]);
	System.out.println(score [1][1]);
	System.out.println(score [2][0]);
	System.out.println(score [2][1]);
	
	/// 2단계 : for문 만들어 주기
	

	System.out.println(score [0][0]);
	System.out.println(score [0][1]);
	
	for(int i =0, i<2; i++) {
		System.out.println(score [0][i]);  //규칙찾기 1
	}
	
	System.out.println(score [1][0]);
	System.out.println(score [1][1]);
	
	for(int i=0; i<2;i++) {
	 System.out.println(score [1][i]);    //규칙찾기 1
	}
	 
	 
	System.out.println(score [2][0]);
	System.out.println(score [2][1]);
	 
	for(int i =0; i<2 ;i++) {
	 System.out.println(score [2][i])	; //규칙찾기 1	
	}
	 
	 /// 최종 확인하기 
	 
	for(int i =0; i<2; i++) {
		System.out.println(score [0][i]);   //규칙찾기 1
	}
	 for(int i=0; i<2;i++) {
	   System.out.println(score [1][i]);    //규칙찾기 1
	} 
	 for(int i =0; i<2 ;i++) {
	   System.out.println(score [2][i])	;  //규칙찾기 1	
	}
	 
	// 이중 for문 작성 
	 
	 for(int k=0; k<3; k++) {
		 for(int i=0; i<2; i++) {
			 System.out.println(score [k][i]) 
		 }
	 }
이차배열_예시

 

   int[][] table =  new int[5][5];
	
	table[0][0] = 1;
	table[0][1] = 2;
	table[0][2] = 3;
	table[0][3] = 4;
	table[0][4] = 5;
	
	table[1][0] = 6;
	table[1][1] = 7;
	table[1][2] = 8;
	table[1][3] = 9;
	table[1][4] = 10;
	
	table[2][0] = 11;
	table[2][1] = 12;
	table[2][2] = 13;
	table[2][3] = 14;
	table[2][4] = 15;
	
	
    // 규칙 찾기 1	
	table[0][0] = 1; 
	table[0][1] = 2;
	table[0][2] = 3;
	table[0][3] = 4;
	table[0][4] = 5;	
				
	int ans = 1;
	for(int i=0; i<table[0].length ; i++) {   // 규칙확인
		table[0][i] = ans++ ;
	}	
	
	table[1][0] = 6;
	table[1][1] = 7;
	table[1][2] = 8;
	table[1][3] = 9;
	table[1][4] = 10;
	
    for(int i = 0; i<table[1].length; i++) { //규칙확인
	  table[1][i] = ans++ ;
   }
		
    table[2][0] = 11;
	table[2][1] = 12;
	table[2][2] = 13;
	table[2][3] = 14;
	table[2][4] = 15;
	
    for(int i =0; i<table[2].length; i++) {
      table[2][i] = ans++ ;
    }
    
   // 규칙 찾기 2
    
    for(int i=0; i<table[0].length ; i++) {   // 규칙확인
		table[0][i] = ans++ ;
	}
    for(int i = 0; i<table[1].length; i++) { //규칙확인
  	  table[1][i] = ans++ ;
     }
    for(int i =0; i<table[2].length; i++) {
        table[2][i] = ans++ ;
      }
    
   // 규칙 정리
    
    int ans = 1;
    for(int i =0; i<table.length ; i++) {
    	for(int i=0; i<table[0].length ; i++) {  
    		 table[k][i] = ans++ ; ;
    	}
    }
    
  // 출력하기 
    int ans = 1;
    for(int i =0; i<table.length ; i++) {
    	for(int i=0; i<table[0].length ; i++) {   // 규칙확인
    		 System.our.println((table[k][i]=ans)+"\t") ;
    	}
    	System.out.println();
    }

 

      ////<최종정리>
       Scanner sc = new Scanner(System.in);
		int[][] num = new int[5][5];  //배열선언
		
		int a =1;   //초기화
		for( int i =0 ;i<num.length; i++) {
			for(int j=0; j<num[i].length; j++) {
		     System.out.print((num[i][j]= a++)+"\t");    
		}
			System.out.println();
		}

 

 

 

Scanner sc = new Scanner(System.in);
		int[][] num = new int[5][5];  //배열선언
		
		//초기화 , 입력시킴	
		int a =1;  		
	 for(int i=0; i<num.length;i++) {
		 for(int j=0; j<num[i].length;j++) {
			num[i][j]=a++;
		 }
		 System.out.println();
	     }
	 
	   // 배열 수식 걸어주기
	 for(int i=0; i<num.length;i++) {
		 for(int j=0; j<num[i].length;j++) {
			System.out.print (num[j][i]+"\t");
			
		 }
		  System.out.println();
	     }

 

 

 Scanner sc = new Scanner(System.in);
		int[][] num = new int[5][5];  //배열선언
		int a =1;   //초기화 , 입력시킴
		
		
	 for(int i=0; i<num.length;i++) {
		 for(int j=0; j<num[i].length;j++) {
			num[i][j]=a++;
		 }
		 System.out.println();
	 }
	
	   /// 배열 수식 걸어주기
		for(int k =0; k<5; k++) {
			if(k%2==0) {
				for( int i =0 ;i<5; i++) { 
				     System.out.print(num[k][i]+"\t");   
				}
					System.out.println();
			} else {
				for( int i =4 ;i>=0; i--) { 
					 System.out.print(num[k][i]+"\t");    
					}
				    System.out.println();
			}
		}

 

 

출처:스마트인재개발원

728x90
반응형