티스토리 뷰

코딩/JAVA

[2주차 1일] Chapter 5. 배열

ehzim 2023. 10. 16. 17:22

Chapter 5. 배열

 

▶ 학습 목표

: 배열을 알고 반복문 조건문 들과 함께 활용하여 사용할 수 있다.

 

 

 

- 배열

: 같은 타입의 변수를 하나의 묶음으로 관리하는 것이다.

묶음으로 관리하여 편리하고 효율적이다.

 

 

 

- 배열의 사용

 

 

일반변수 선언

 int a;

 

배열변수 선언

int[] x;
int y[];
//둘 다 사용가능

 

 

일반 변수 초기화

a =3;

 

 

배열 초기화

: 배열 길이 지정

  x = new int[3]; //몇개를 묶을것이다.

 


배열 초기화

:배열 길이와 값을 한번에 지정

 int z[] = {1,2,3}; // 따로 선언이 되지 않음
 int w[] = new int[] {1,2,3};

 

 

 

- 인덱스(index)

: 배열의 공간마다 붙여진 번호이다.

인덱스는 0번부터 번호가 시작된다.

 

 

 

ex) 배열 값을 직접 입력 해준 경우의 코드

package chapter5;

public class test5_1 
{

	public static void main(String[] args) 
	{
		int[] student=new int[3];
		System.out.println("현재 자동으로 초기화된 값 : " +student[0]);
		
		student[0]=30;
		student[1]=20;
		student[2]=10;
		
		System.out.println("현재 첫번째 요소의 값 = "+student[0]);

	}

}

 

 

 

 

ex) for문 이용해서 배열값 입력한 경우의 코드

package chapter5;

public class test5_1 
{

	public static void main(String[] args) 
	{
		int[] student=new int[3];
		int i;
		System.out.println("현재 자동으로 초기화된 값 : " +student[0]);
		
		for(i=0; i<student.length; i++) 
		{
			student[i]=i;
			System.out.println(student[i]);
		}
		
		System.out.println("현재 첫번째 요소의 값 = "+student[0]);


	}

}

 

 

 

 

 

 

ex) 배열을 선언한 후 Arrays.toString()을 사용하여 배열구하는 경우 코드

package chapter5;
import java.util.*;

public class test5_2 {

	public static void main(String[] args) 
	{
		int[] a =new int[] {10,20,4,25,18};
		
		
		int[] b= {1,2,3,4,5,6,7};
		
		int[] c= new int[10];
		for(int i=0; i<c.length; i++) 
		{
			c[i]=i;
		}
		
		for(int i=0; i<c.length; i++) 
		{
			System.out.println(c[i]);
		}
		
		System.out.println("");
		System.out.println(Arrays.toString(c));
		//Arrays.toString.()사용

	}

}

 

0123456789
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

*Arrary.toString(배열이름) 사용할 경우 import java.util.Arrays; 작성 필요함

 

 

 

 

ex) 시험 점수의 평균을 구하는 코드

package chapter5;

public class test5_3 {

	public static void main(String[] args) 
	{
		int[] student = {100,95,90,88,93};
		int sum = 0;
		for(int i=0; i<student.length; i++) 
		{
			sum+=student[i];
		}
		
		System.out.println("시험 점수의 평균 : " +sum/(float)student.length); //sum/5.0f;

	}

}

 

 평균을 나누어주는 경우 정수끼리 나누기때문에 정수값이 나온다.

실수값으로 구하고자하는 경우 (float)student.length  or  sum/5.0f; 를 사용하여 형변환해 준다.

 

 

 

 

- 다차원 배열

: 2차원 이상의 배열을 다차원 배열이라고 한다.

(= 일차원 배열이 하나의 빌라에 호수라면 다차원 배열은 아파트의 동, 호수)

 

 

 

2차원 배열의 선언과 생성

int[][] x;
int y[][];
//둘 다 사용가능

 

 

타입[][] x = new 타입[][];

int [][] x = new int[3][3];
String [][] y = new String[3][5];

 

 

 

 

- 2차원 배열의 인덱스

: 1차원 배열과 같이 0부터 시작한다.

 

ex) int x[4][3]

[0][0] [0][1] [0][2] [0][3]
[1][0] [1][1] [1][ 2] [1][3]
[2][0] [2][1] [2][2] [2][3]

 

 

ex) 2차원 배열 순서대로 출력하는 코드

package chapter5;

public class test5_5 {

	public static void main(String[] args) 
	{
		int [][] test = {{1,2},{3,4},{5,6},{7,8},{9,10}};
		
		for(int i=0; i<test.length; i++) 
		{
			for(int j=0; j<test[i].length; j++) 
			{
				System.out.println(test[i][j]);
			}
		}

	}

}

 

 

 

 

- foreach

: 배열을 순서대로 입출력시 반복문보다 편리하게 작업하는 방법

 

 

for(배열의 타입 변수이름 : 배열이름)
{
	//실행구문
}

 

 

ex) foreach문을 사용하여 배열 출력

package chapter5;

import java.util.Scanner;

public class test5_6 {

	public static void main(String[] args) 
	{
		String[] a = {"Java", "Hello", "Programming"};
		
		for(String i :a) 
		{
			System.out.println(i);
		}
		
		int[] b= {1,2,3,4,5};
		
		for(int i :b) 
		{
			System.out.println(i);
		}

	}

}

 

Java
Hello
Programming
12345

 

 

 

 

ex) 앞뒤 숫자 비교하여 내림차순으로 정렬하여 출력하는 코드

package test_coding;

import java.util.Arrays;
import java.util.Scanner;

public class cal2 {

   public static void main(String[] args) 
   {
      int[] group = {9,54,2,58,99,45,87};
      //0~6까지 반복, 7번반복
      for(int i=0; i<group.length;i++) {
         for(int j=i+1; j<group.length;j++) {
            if(group[i]<group[j]) {
               int tmp = group[i];
               group[i] = group[j];
               group[j] = tmp;
            }
         }
      }
      System.out.println(Arrays.toString(group));
      
   }

}

 

[99,87,58,54,45,9,2]

 

group[i] group[j]를 비교하여 큰수가 앞으로 오도록 내림차순하여 정렬한다.

이때 j는 i+1 인데, 앞 뒤 숫자를 비교하는 것이기 때문에 전에서 비교한 숫자나 같은 자리의 숫자는 비교하지 않아도 되기 때문에 i+1이다.

자리의 수를 바꾸는 경우 변수는 변화하는 수로 덮어쓰는 성질이 있기 때문에 int tmp라는 변수를 생성하여 임의로 저장하여 보관 후 다시 대입해서 값을 변경한다.

 

 

 

 

 

ex) 앞뒤 숫자 비교하여 오름차순으로 정렬하여 출력하는 코드

 

package chapter5;

public class test5_7 
{

	public static void main(String[] args) 
	{
		int []a= {80,40,50,70,100,35,25};
		
		for(int i=0; i<a.length; i++) 
		{
			for(int j=i+1; j<a.length; j++) 
			{
				if(a[i]>a[j]) 
				{
					int tmp=a[i];
					a[i]=a[j];
					a[j]=tmp;
					
				}
				
			}
		}
		for(int k=0; k<a.length; k++) 
		{
			System.out.print(" " +a[k]);
		}

	}

}

 

이전의 코드와 다르게 내림차순으로 정렬했다.

출력시 for문을 사용하여 출력을 해준다.

 

 25 35 40 50 70 80 100

 

 

 

 

ex) 앞뒤 숫자 비교하여 오름차순으로 정렬하여 출력하는 코드(이전과 출력시 코드 다름)

 

package chapter5;

public class test5_4 
{

	public static void main(String[] args) 
	{
		int []a= {80,40,50,70,100,35,25};
		
		for(int i=0; i<a.length; i++) 
		{
			for(int j=i+1; j<a.length; j++) 
			{
				if(a[i]>a[j]) 
				{
					int tmp=a[i];
					a[i]=a[j];
					a[j]=tmp;
					
				}
				
			}
		}
		for(int k:a) 
		{
			System.out.print(" " +k);
		}

	}

}

 

이전의 코드와 다르게 출력시 foreach문을 사용하여 출력했다.

 

 25 35 40 50 70 80 100
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday