초급JAVA 5 - 배열1

voilà!·2021년 10월 31일
0

초급JAVA

목록 보기
9/24

배열

  • 여러개의 값을 하나의 변수에 저장해서 사용하는 것이다.
  • 참조형 타입이다. //보통은 타입 뒤에 []붙임
  • 인덱스로 값을 구분한다.
  • 길이를 변경할 수 없다.

<배열 초기화 방법 1>
int[] array;
//배열의 주소를 저장할 공간이 만들어진다.
array = new int[5]
//배열이 생성되고 그 주소가 저장된다.
//int[5] : int 5개를 저장할 공간이 만들어지고, 그 주소가 array라는 변수에 저장된다.

array(변수) = 100번지(주소)
100번지 = 첫번째 값의 주소
{0,0,0,0,0}
길이만 저장

<배열 초기화 방법 2>
array = new int[]{1,2,3,4,5};
배열 초기화 후 중괄호에 저장할 값 입력
길이와 값까지 저장

System.out.println(array);
// 출력되는 건 -> 배열의 주소
System.out.println(array[0]);
// 주소가 아닌 값을 출력시키기 위해 변수뒤에 들어갈 숫자를 붙임
(여기서 숫자 = 인덱스, 배열의 인덱스는 왼쪽부터 들어가있는 순서대로 출력된다.)
System.out.println(array[1]);
// 두번째 들어있는 값 출력됨 , 인덱스는 0부터 시작

한줄복사 : ctrl + alt + 방향키(위/아래)

값을 저장하고 싶을 때
array[0] = 10;
array[1] = 20;
array[2] = 30;
array[3] = 40;
array[4] = 50;

인덱스가 0부터 1씩 증가하는 규칙이 있어 반복문으로 만들 수 있음

반복문으로 위의 값 저장하기

for(int i = 0; i < array.length; i++){
array[i] = (i + 1) * 10;
}

array.length : 이 배열의 크기가 몇인지 저장하고 있는 메서드

for(int i = 0; i < array.length; i++){
System.out.println(array[i]);
}

10개의 정수를 저장할 수 있는 배열을 선언 및 초기화해주세요.

int array = new int[10];

배열의 모든 인덱스에 1~100사이의 랜덤한 값을 저장해주세요.

for(int i = 0; i < array.length; i++){
array[i] = (int)(Math.random() * 100) +1;
}
System.out.println(Arrays.toString(array));

Arrays.toString() 배열의 모든 값을 문자열로 출력해주는 메서드, ()안이 반드시 배열이어야 한다.

배열에 저장된 모든 값의 합계와 평균을 출력해주세요.

int sum = 0;
double avg = 0;
for(int i = 0; i < array.length; i++){
sum += array[i];
}
avg = (double) sum / array.length;
System.out.println("합계 : "+ sum +"/평균 : "+avg);

배열에 저장된 값들 중 최소값과 최대값을 출력해주세요.

내 풀이

  int min = array[0];
  int max = array[0];
  for(int i = 0; i <= array.length; i++){
	  if( min > array[i]){
		  min = array[i];
	  }
	  if( max < array[i]){
		  max = array[i];
	  }
	 }
  System.out.println("최소값 :" + min + "최대값 :"+ max);

선생님 풀이

  int min = arr[0];
  int max = arr[0];      
  for(int i = 0; i < arr.length; i++){
	  if(arr[i] < min){
		  min = arr[i];
	  }
	  if(max < arr[i]){
		  max = arr[i];
	  }
  }
  System.out.println("최소값 :" + min + "최대값 :"+ max);

배열의 값 섞기

int[] shuffle = new int[10];
for(int i = 0; i < shuffle.length; i++){
shuffle[i] = i+1;
}
System.out.println(Arrays.toString(shuffle));

랜덤 인덱스를 발생시켜서 인덱스 0번이랑 자리 바꾸기

내 풀이

   int random = 0;
   for(int i = 0; i < shuffle.length; i++){
	   random = (int)(Math.random()*shuffle.length);
	   int temp = shuffle[i];
	   shuffle[i] = shuffle[random];
	   shuffle[random] = temp;
	  }	   
   System.out.println(Arrays.toString(shuffle));

선생님 풀이

   for(int i = 0; i < shuffle.length * 10; i++){
   int random = (int)(Math.random()* shuffle.length); 
   int temp = shuffle[0];
   shuffle[0] = shuffle[random];
   shuffle[random] = temp;
   }
   System.out.println(Arrays.toString(shuffle));

1~10 사이의 랜덤값을 500번 생성하고, 각 숫자가 생성된 횟수를 출력해주세요.

내 풀이(선생님 풀이와 동일)

   int[]value = new int[10];
   for(int i = 0; i < 500; i++){
	   int num = (int)(Math.random()*10) + 1;
   	   value[ num - 1 ]++;}
   for (int i = 0; i < value.length; i++) {
	   System.out.println(( i + 1 + ": " + value[i]+"번"));
   }

0개의 댓글