course 2021/JAVA

day04 - array, scanner

코딩하는토끼 2021. 8. 18. 10:09

> 배열 Array

같은 datatype의 변수 여러개를 선언할 때 쓰임

동종모음 Homogeneous collection - 다른 datatype 혼합해서 사용 불가

일종의 datatype으로 취급 - 기본 datatype/객체참조 datatype/다른 배열의 순차적 집합체 라고 할 수 있음

배열을 정의하는 대괄호가 배열변수명 앞에 오는 것이 가능

 

1. 선언 - datatype 지정, 크키 지정 불가

<datatype><배열이름[ ]>;  OR  <datatype[ ]><배열이름>;

int arr[];
int[] arr;

2. 생성 - 배열의 크기 지정

<배열이름> = new <datatype[배열의 크기]>;

arr = new int[3];

[index]: 0부터 시작해서 (크기-1)까지

(ex. 배열의 크기가 3이면 index는 0, 1, 2)

3. 초기화 - 배열에 들어갈 값 입력

arr[0] = 10;
arr[1] = 9;
arr[2] = 8;

초기화를 하지 않으면, datatype 기본값으로 자동 초기화됨 (기본값: 0, 0.0, null)

4. 선언/생성 동시에 - datatype, 크기 지정 동시에

<datatype[ ]><배열이름> = new <datatype[크기]>;

int[] arr = new int[3];

5. 선언/생성/초기화 동시에

<datatype[ ]><배열이름> = {값1, 값2, 값3, ..., 마지막값};

int[] arr = {10, 9, 8};

입력한 값의 개수 = 배열의 크기

6. 배열에 저장된 값을 한눈에 문자열 형태로 확인하기

Arrays. 입력 후 보기 중 toString 선택

Arrays. toString(배열이름)

System.out.println(Arrays.toString(arr));
// [10, 9, 8]

7. 배열의 길이

배열에 저장할 수 있는 전체 항목 수

배열이름.length

System.out.println(arr.length); // 3

*배열의 마지막 값 = 배열이름[배열의길이 - 1]

System.out.println(arr[arr.length-1]); //8

*배열의 주소값 ([0]의 주소)

배열이름

 System.out.println(arr);

*정렬

Arrays.sort(배열이름);


> Scanner

*자바 표준 입출력  IO

IO: Input/Output

Input: 파일의 데이터를 읽음 loading / 키보드의 입력데이터를 읽음 / 네트워크상의 데이터를 읽음

Output: 파일에 데이터를 씀 save / 모니터에 데이터를 씀 / 네트워크상에 데이터를 씀 (파일전송)

자바에서 데이터 출력 명령은 System.out, 데이터 입력 명령은 System.in 사용

데이터를 입력받을 때, 표준 JAVA API인 Scanner 클래스 사용

Scanner API 

1. scanner 객체 생성

Scanner 입력 후 ctrl+space 로 import → import java.util.Scanner

Scanner 스캐너이름 = new Scanner(System.in);

Scanner scan = new Scanner(System.in);

2. 입력받을 datatype에 따른 메서드 호출

스캐너이름.next() : 공백 미포함 문자열

스캐너이름.nextLine() : 공백 포함 문자열

스캐너이름.nextInt() : 정수

스캐너이름.nextDouble() : 실수

int a = scan.nextInt();

*오류 처리

.nextInt()등에서 정수가 입력될 때, 마지막 개행문자(엔터)를 제거하지 않고 이전까지만 입력받음

그에 따라 다음 .nextLine()등에서 개행문자가 입력되고 입력 값이 한 줄씩 밀려 오류가 발생

→ 해결방법: 개행문자를 받아줄 .nextLine()을 한 줄 추가해준다

3. Scanner 객체 종료

종료 후 같은 스캐너 다시 사용 불가함

스캐너이름.close();

scan.close();

 

ex

Scanner scan = new Scanner(System.in);
System.out.print(">");  //println 이 아닌 print를 써야 > 와 같은 줄에서 입력받을 수 있음
int a = scan.nextInt();

System.out.println(a);

// >(입력)
// 입력한 숫자