자바 초보에서 알고리즘 B형까지 도전기4 -배열 필수지식1-

1. 한줄에 여러개의 수가 있을 때 입력 받기

 

한 줄에 공백을 두고 10개의 수가 있다면, 반복문으로 sc.nextInt();를 10번 반복해서 받을 수 있을 것이다.

 

그런데 어딘가에 10개의 수를 모두 저장해두지 않으면, 나중에 다시 활용할 수 없을 것이다.

 

그러면 결국 10개의 수를 저장할려면 10개의 변수를 써야하는데..

 

int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10;
a1 = sc.nextInt();
a2 = sc.nextInt();
...
a10 = sc.nextInt();

 

10개야 뭐 어떻게 쓰더라도 100개, 1000개,... 면 언제 다 쓸까?

 

이럴 때 배열을 이용하면 쉽게 받을 수 있다.

 

정수형 배열은 다음과 같이 선언 가능하다.

 

//길이가 3인 정수형 배열 생성
int[] arr = new int[3];

//분리해서
int[] arr;
arr = new int[3];

 

길이가 n인 정수형 배열은 int[] arr = new int[n];으로 생성 가능하다.

 

혹은 길이를 사용하지 않고, 초기값을 처음부터 넣겠다면.. 

 

중괄호 { }안에 해당하는 원소를 넣는다

 

이 경우에 new int[]에서 []안에 배열의 크기를 넣으면 안된다.

 

//초기값을 처음부터 넣기
int[] arr = new int[]{ 5, 6, 10 };

 

배열 참조할 때는 python에서 인덱스 참조하는 것처럼 arr[0] = 5, arr[1] = 6, arr[2] = 10...

 

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

 

아무튼 한 줄에 10개의 수를 입력 받아 배열에 저장할려면...

 

int[] arr = new int[10];으로 배열 생성하고

 

sc.nextInt()로 받아서 i번째 자리에 집어넣기

 

Scanner sc = new Scanner(System.in);

int[] arr = new int[10];

for (int i = 0; i < 10; i++) {
    arr[i] = sc.nextInt();
}

 

2. 음수 인덱스

 

자바는 기본적으로 음수 인덱스가 불가능하다

 

길이가 n인 배열에서 마지막 원소에 접근하고 싶다면.. arr[n-1]로 접근해야겠다

 

 

3. final 키워드, Integer.MIN_VALUE, Integer.MAX_VALUE

 

변해서는 안되는 값에 선언할 수 있다.

 

final로 선언된 변수의 값을 바꾸려고 한다면 에러가 발생한다

 

final int INT_MIN = Integer.MIN_VALUE;
INT_MIN = 50; // 에러 발생

 

여기서 Integer.MIN_VALUE;는 자바에서 int범위에서 가장 작은 값을 의미함

 

참고로 Integer.MAX_VALUE는 자바에서 int범위에서 가장 큰 값이다.

 

위와 같이 final로 선언한 경우 바꿀려고 하면 에러남

 

이렇게 변하지 않는 상수에는 변수명을 전부 대문자로 쓰고 단어와 단어 사이에 _으로 연결해주는 관례가 있다.

 

주어진 배열에서 최댓값을 찾고자 할때, 최댓값 Integer.MIN_VALUE;로 초기화를 할 수 있다.

 

public class Main {
    public static void main(String[] args) {
        final int INT_MIN = Integer.MIN_VALUE;

        int[] arr = new int[]{ -1, -5, -2, -5, -3, -9 };
        int maxVal = INT_MIN;
        for (int i = 0; i < 6; i++) {
            if (arr[i] > maxVal) {
                maxVal = arr[i];
            }
        }

        System.out.println(maxVal);
    }
}

 

TAGS.

Comments