// 배열이란 ?  많은 양의 데이터를 손쉽게 저장하기 위한 방법

package JavaTest;

public class ArrayEx1 {

 public static void main(String[] args) {

  int sum = 0;
  float average = 0f;
  
  int[] score = {100,90,80,70,60};    //1차원 배열 5개 선언
  
  for(int i=0;i<score.length;i++){
   sum = sum+score[i];                    //sum 을 누적
  }
  
  average = (float)sum/score.length;     //평균은 배열 길이로 나눈값
  
  System.out.println("합계:"+sum);
  System.out.println("평균:"+average);
 }
}

 

---------------------------------------------------------------------------

 

//간단한 배열값 비교

package JavaTest;

public class ArrayEx2 {

 public static void main(String[] args) {

  int[] score = {79,88,91,33,100,55,65};     //1차원 배열 7개 선언
  
  int max = score[0];                 //score[0] 을 최대값으로 선언
  int min = score[0];                  //score[0] 을 최소값으로 선언
  
  for(int i=1;i<score.length;i++){
   if(score[i]>max){                 //score[1]~[6]까지 score[0] 과 비교하여 크다면
    max=score[i];                  // 그 값이 최대값으로 한다.
   }
   if(score[i]<min){                 //score[1]~[6]까지 score[0] 과 비교하여 작다면
    min=score[i];                    // 그 값이 최소값으로 한다.
   }
  }
  
  System.out.println("최대값:"+max);
  System.out.println("최소값:"+min);
 }
}


-----------------------------------------------------------------------------------

 

// random() 메서드 활용 해보기

package JavaTest;

public class ArrayEx3 {

 public static void main(String[] args) {

  int[] number = new int[10];
  
  for(int i=0;i<number.length;i++){
   number[i] = i;                                // 0~9까지의 숫자를 number[0]~[9] 까지 초기화한다.
   System.out.print(number[i]);   
  }
  System.out.println();
  
  for(int i=0;i<100;i++){             //100번 충분히 돌린다.
   int n = (int)(Math.random()*10);    // 10개중(0~9까지 숫자중) 1개를 뽑는다.
   
   int temp = number[0];     //number[0] 값을 temp에 넣는다.
   number[0] = number[n];  //number[n] 값을 number[0]에 넣는다.
   number[n] = temp;          //temp 값을 number[n] 에 넣는다.
                                           //위에 3문장은 숫자를 섞을때 자주 사용되는 문장이다. 초기값을 선언을 해주어도 좋다.
  }
  
  for (int i = 0; i < number.length; i++) {
   System.out.print(number[i]);              //위에 섞은 값을 number[0] 부터 순서대로 출력하자!
  }
 }
}

 

-----------------------------------------------------------------------------------------------

 

 

//로또 추첨기 (중복은 허용)..

package JavaTest;

public class ArrayEx4 {

 public static void main(String[] args) {

  int[] ball = new int[45];             //45개의 배열을 선언한다.
  
  for(int i=0;i<ball.length;i++){       //배열의 각 요소에 1부터 45까지 저장한다.
   ball[i] = i+1;                           // <--배열은 0부터기때문에 왼쪽 식을 지정하여 ball[0]에 1을 저장하는..
  }                                                  //로또는 0이 없기 때문에~
  
  int temp = 0;              //두값을 바꿀때 쓸 임시 temp 변수
  int j = 0;                    //임의의 값을 저장할 변수
  
  for(int i=0;i<100;i++){                 //100번 썩이도록 ~~
   j = (int)(Math.random() * 45);       //배열범위 0~44 의 임의의 값을 얻는다
   
   temp = ball[0];         //첫번째 배열 ball[0] 을 temp에 넣는다.
   ball[0] = ball[j];       //랜덤으로 얻어진 ball[j]값을 첫번째 배열 ball[0] 에 넣는다. 
   ball[j] = temp;         //temp 값을 ball[j] 에 넣는다.
                                  //위 세가지는 섞어주기 위한!!! 필수!!
  }
  
  for(int i=0;i<6;i++){                 
   System.out.print(ball[i]+"/ ");      //배열 6개를 출력하랏!
  }
 }

}

---------------------------------------------------------------------------------------------------------

 

 

//버블 정렬 알고리즘

package JavaTest;

public class ArrayEx5 {

 public static void main(String[] args) {

  int[] number = new int[10];   //크기가 10인 배열
  
  for(int i=0;i<number.length;i++){
   System.out.print(number[i] = (int)(Math.random()*10));
  }  //우선 임의적으로 0~9까지 배열을 랜덤하게 뽑아낸다. 중복도 상관은 없엉! 우선 그렇게 해놓았네
  //nuber[0]~[9]까지 배열 값에 랜덤 숫자를 각각 담는다. 
  
  
  
  System.out.println();
  
  for(int i=0;i<number.length;i++){
   boolean changed = false;        //자리 바꿈이 발생했는지 체크!
   
   for(int j=0;j<number.length-1-i;j++){
    if(number[j]>number[j+1]){     //왼쪽값이 크면 ~ 예) number[0] > number[1] (각 배열에는 랜덤숫자가 들어가있음)
     int tmp = number[j];                  //바꿔라~
     number[j] = number[j+1];
     number[j+1] = tmp;
     changed = true;                        //바뀌었다면 true 로~
    }
   }
   
   if(!changed) break;               //자리 바꿈이 없다면 반복문을 벗어난다.
   
   for(int k=0;k<number.length;k++)
    System.out.print(number[k]);
       System.out.println(); 
  }
 }

}

 

----------------------------------------------------------------------------------------------------------------------

 

//P.123 [랜덤을 통해 뽑아낸 숫자를 하나씩 세어보기]

package JavaTest;

public class ArrayEx6 {

 public static void main(String[] args) {

  int[] number = new int[10];            //1차원 배열 10개를 number 에 담는다.
  int[] counter = new int[10];            // 1차원 배열 10개를 counter 에 담는다.
  
  for(int i=0;i<number.length;i++){
   System.out.print(number[i] = (int)(Math.random()*10));     //랜덤하게 뽑은 수를 number[i] 배열에 각각 담는다.
  }
  System.out.println();
  
  for(int i=0;i<number.length;i++){
   counter[number[i]]++;                          //number[i] 의 개수를 하나씩 세어라~! 헐~
  }
  
  for(int i=0;i<number.length;i++){
   System.out.println(i+"의 개수:"+counter[i]); 
  }
  
 }

}

 

------------------------------------------------------------------------------------------------------------

 

 

//P.124 charAt(int idx) : 괄호안에 인덱스 안에 있는 문자열을 반환하는 메서드!
//**charAt 은 char 형은 사용 못하고 String 문자열에서만 사용할 수 있다.!!!!

package JavaTest;

public class ArrayEx8 {

 public static void main(String[] args) {

  String src = "ABCDE";
  //char[] src = {'A','B','C','D','E'};    사용못함 X
  
  for(int i=0;i<src.length();i++){
   System.out.println("src.charAt("+i+"):"+src.charAt(i));
  }
 }
}

------------------------------------------------------------------------------------------------------------

 

//P.128 다차원 배열 (열과 행)으로 구분을 짓는다.

package JavaTest;

public class ArrayEx10 {

 public static void main(String[] args) {

  int[][] score = { {100,100,100}, {20,20,20}, {30,30,30}, {40,40,40}, {50,50,50} };
  
  int koreaTotal = 0;
  int englishTotal = 0;
  int mathTotal = 0;
  
  System.out.println("번호  국어  영어  수학  총점  평균");
  System.out.println("==================");
  
  for(int i=0;i<score.length;i++){
   int sum = 0;
   koreaTotal = koreaTotal+score[i][0];
   englishTotal = englishTotal+score[i][1];
   mathTotal = mathTotal+score[i][2];
   System.out.print(" "+(i+1)+" ");
   
   for(int j=0;j<score[i].length;j++){
    sum = sum+score[i][j];
    System.out.print(score[i][j]+" ");
   }
   System.out.println(sum+" "+sum/(float)score[i].length);
  }
  
 }

}

 

-------------------------------------------------------------------------------------------------------

 

//P.130 배열의 복사

package JavaTest;

public class ArrayEx11 {

 public static void main(String[] args) {

  int[] number = {1,2,3,4,5};        //①
  int[] newNumber = new int[10];  //②
  
  
  for(int i=0;i<number.length;i++){
   System.out.print(number[i]);   //①
   newNumber[i] = number[i];     //①number 배열 하나씩 newNumber 에 담는다. 5개 담아지겠다.
  }
  System.out.println();
  
  for(int i=0;i<newNumber.length;i++){
   System.out.print(newNumber[i]);   //② 기존에 담았던 5개 그러니깐 이전 for 문을 복사함
  }                                                       //나머지 5~9 까지 공간에는 '0'으로 초기화해서 담김
 }

}

 

----------------------------------------------------------------------------------------------------------

 

//P.132 ( System 클래스의 arraycopy() ) 복사

package JavaTest;

public class ArrayEx12 {

 public static void main(String[] args) {

  char[] abc = {'A','B','C','D'};
  char[] number = {'0','1','2','3','4','5','6','7','8','9'};
  System.out.println(new String(abc));
  System.out.println(new String(number));
  
  char[] result = new char[abc.length+number.length];               
  //길이 14인 배열 result (result 는 char 형이기 때문에 1,2,3... 형식이 아닌 공백으로 14자리를 만든다.)
  System.arraycopy(abc,0,number,0,abc.length);                               
  // abc[0] 시작해서 number[0] 부터 복사하는데, 길이는(abc.length)=4만큼만 복사해라  --> ABCD456789 
  System.arraycopy(number, 0, result, abc.length, number.length);     
  // 위에 내용을 이어서 number[0] 시작해서 result[4] 부터 복사하는데...
  // 길이는 (number.length)=10만큼만 복사해라 --> ABCD456789  -->'     'ABCD456789
  System.out.println(new String(result));  //--> ABCD0123456789
  
  System.arraycopy(abc,0,number,0,abc.length);
  //abc[0] 시작해서 number[0] 부터 복사하는데 총 길이 4만큼만 복사해라
  //--> ABCD456789
  System.out.println(new String(number));
  
  System.arraycopy(abc, 0, number, 6, 3);
  //abc[0] 시작해서 number[6] 부터 복사하는데 총길이가 3만큼만 복사해라
  //--> ABCD456789   --> ABCD45ABC9
  System.out.println(new String(number));
 }

}

 

-------------------------------------------------------------------------------------------------------------

 

 

 

Posted by 옆모습오빠
: