코딩항해기

[JAVA] 입력 클래스, 입력 메소드 본문

JAVA

[JAVA] 입력 클래스, 입력 메소드

miniBcake 2024. 6. 20. 13:17

 

[요약]

Scanner sc = new Scanner(System.in);  입력클래스 선언
.next() 입력받은 값을 String 타입으로 반환하고 엔터를 소모하지 않음
.nextLine() 입력받은 값을 String 타입으로 반환하고 엔터를 소모함
.nextInt() 입력받은 값을 int 타입으로 반환하고 엔터를 소모하지 않음
.nextDouble() 입력받은 값을 double 타입으로 반환하고 엔터를 소모하지 않음

 


 

[입력클래스]

 

콘솔창을 통해 사용자로부터 입력값을 받기 위해서는 먼저 입력클래스를 선언해주어야한다.

Scanner 타입의 sc 변수에 Scanner 객체를를 생성한 뒤, Scanner클래스를 import(ctrl+shift+o) 시켜주어야한다.

(일반적으로 변수명은 sc를 사용한다)

Scanner sc = new Scanner(System.in); 

 

여기서 사용된 new는 인스턴스(객체)를 생성할 때 사용하는 코드로,  객체 변수가 참조 값을 갖는다는 내용이다.

 

new 연산자를 통해 메모리(heap)에 데이터를 저장할 공간을 할당시키고,

그 공간의 참조값을 객체에 반환한 뒤 이어지는 생성자를 실행시키게 된다.

 

new 연산자로 생성된 객체는 같은 생성자로 불러온 객체가 있어도 서로 다른 heap메모리 공간을 사용하기 때문에

서로 다른 객체로 분류된다. 

 


 

[입력메소드]

입력 클래스를 선언하였으면 Scanner 클래스 내부에 있는 입력 메소드를 호출하여 사용할 수 있다.

java언어는 객체 지향 언어이므로, 클래스 내부에 있는 메소드를 사용할 때에는 앞에 객체명을 붙여주어야한다.

 

.next()

입력받은 값을 String타입으로 반환한다.

입력하는 순간부터 줄바꿈이 이뤄지는 순간까지만 입력값으로 저장한다.

입력한 값을 띄어쓰기, 엔터로 구분하고 분리하여

첫번째 문자열을 처음 next()에 저장하고, 두번째 문자열은 그 다음 next()에 저장한다.

다음 next()가 없을 경우 임시공간에 남아있게 된다.

엔터를 소모하지 않는다.

 

.nextLine()

입력받은 값을 String타입으로 반환한다.

띄어쓰기를 포함한 한줄 전체를 입력 받으며, 엔터를 소모하지만 엔터 이전까지의 값을 가져온다.

 

엔터를 소모하지 않는 입력메소드를 사용한 뒤 사용할 경우,

버퍼 공간에 남아있는 소모되지 않았던 엔터가 사용되며 정상작동하지 않는 경우도 존재한다.

이런 경우를 예방하기 위해 엔터를 소모하지 않는 입력메소드 사용 후 .nextLine()을 사용할 때에는

버퍼 공간을 비우는 용도의 .nextLine()을 한 번 넣고 실제 입력값을 받을 .nextLine()을 다시 사용하면 된다.

 

.nextInt()

입력받은 값을 int 타입으로 반환한다.

엔터를 소모하지 않는다.

 

.nextDouble()

입력받은 값을 double 타입으로 반환한다.

엔터를 소모하지 않는다.