자바에서 스캐너를 사용하는 방법

How Use Scanner Java



Java의 Scanner는 java.util 패키지의 클래스입니다. 이 클래스는 문자열, 키보드, 파일 또는 네트워크 소켓에서 입력을 읽는 것을 목표로 합니다. 이 기사는 키보드에서 입력을 읽고 터미널 창에 결과를 표시하는 데만 집중합니다. 유사한 아이디어를 사용하여 파일 또는 네트워크 채널에서 입력을 읽을 수 있습니다. 스캐너가 터미널 창에 인쇄하지 않습니다. 터미널로 인쇄하려면 System.out 객체를 사용하십시오. 아래 그림과 같이 이 객체를 사용하여 터미널에 인쇄하는 것은 간단합니다.

Scanner 클래스를 사용하려면 먼저 가져와야 합니다. 그런 다음 개체는 개체에서 인스턴스화되어야 합니다. Scanner 개체를 사용한 후에는 닫아야 합니다. 키보드를 나타내는 입력 스트림 개체는 System.in입니다. 스캐너에는 많은 방법이 있습니다. 이 기사에서는 일반적으로 사용되는 것만 설명합니다.







기사 내용



스캐너 클래스의 간단한 사용

다음 코드는 사용자에게 문장을 입력하도록 요청한 다음 문장을 표시합니다.



수입 java.util.스캐너;

공공의 수업클래스{
공공의 공전 무효의기본( []인수) {
스캐너 scanObj= 새로운스캐너( 체계 .~에);
체계 ..인쇄('문장을 입력하고 Enter를 누르십시오:');

문장=스캔오브제이.다음줄();
체계 ..인쇄(문장);

스캔오브제이.닫다();
}
}

첫 번째 줄은 Scanner 클래스를 가져옵니다. 주 함수에서 첫 번째 줄은 키보드용 System.in 개체를 사용하여 스캐너 개체를 만듭니다. 스캐너 개체가 생성되자마자 입력을 기다리기 시작합니다. 다음 줄은 사용자에게 문장을 입력하도록 요청하는 문장을 인쇄합니다. 코드에서 다음 줄은 스캐너 객체의 nextLine() 메서드를 사용하여 사용자가 Enter 키를 누른 후 문장을 읽습니다. 코드에서 다음 줄은 터미널 창에서 문장을 다시 인쇄합니다. 마지막 줄은 스캐너 개체를 닫습니다.

입력 라인을 값으로 분할

다음 코드는 공백을 구분 기호로 사용하여 입력 라인을 단어(토큰)로 분할합니다.

수입 java.util.스캐너;

공공의 수업클래스{
공공의 공전 무효의기본( []인수) {
스캐너 scanObj= 새로운스캐너( 체계 .~에);
체계 ..인쇄('한 줄의 토큰을 입력하고 Enter 키를 누르십시오.');

동안(스캔오브제이.hasNext()){
체계 ..인쇄(스캔오브제이.다음());
}

스캔오브제이.닫다();
}
}

hasNext() 및 next()는 스캐너 객체의 두 가지 다른 메서드입니다. 스캐너 개체가 줄을 읽을 때 유지합니다. next()는 다음 토큰(단어)에 액세스합니다. hasNext()는 아직 액세스하지 않은 다른 토큰이 있으면 true를 반환합니다.

불행히도 사용자는 이 코드를 사용하여 분할하고 다시 표시하기 위한 입력을 계속 입력해야 합니다. 이 모든 작업을 끝내려면 Ctrl+z를 누르면 명령 프롬프트로 돌아가야 합니다.

위의 코드에서 구분 기호는 공백에서 토큰을 구분합니다. 다른 문자를 사용할 수 있습니다. 다음 코드는 쉼표를 사용합니다. 코드를 테스트하는 경우 루프를 종료하려면 Ctrl+z를 누르는 것을 잊지 마십시오.

수입 java.util.스캐너;

공공의 수업클래스{
공공의 공전 무효의기본( []인수) {
스캐너 scanObj= 새로운스캐너( 체계 .~에);
체계 ..인쇄('한 줄의 토큰을 입력하고 Enter 키를 누르십시오.');

스캔오브제이.구분자 사용(',');

동안(스캔오브제이.hasNext()){
체계 ..인쇄(스캔오브제이.다음());
}

스캔오브제이.닫다();
}
}

코드를 테스트했다면 토큰의 공백이 토큰(출력)의 일부로 포함되었음을 알 수 있습니다. 표현식, scanObj.useDelimiter(,); 입력 라인을 읽은 후에 입력합니다. 쉼표, 구분 기호를 만드는 것입니다.

기본 데이터 유형 읽기 및 유효성 검사

nextBoolean() 메서드

다음 코드에서 사용자는 따옴표 없이 true 또는 false를 입력해야 하며 사용자가 yes 또는 no와 같은 다른 항목을 입력하면 Enter 키를 누르면 오류 메시지가 표시됩니다.

수입 java.util.스캐너;

공공의 수업클래스{
공공의 공전 무효의기본( []인수) {
체계 ..인쇄('당신은 24 세 이상입니까? ');
스캐너 scanObj= 새로운스캐너( 체계 .~에);

부울=스캔오브제이.다음부울();
만약 (== 진실) {
체계 ..인쇄('당신은 24세 이상입니다');
}
또 다른 만약 (== 거짓) {
체계 ..인쇄('당신은 24세 미만입니다');
}

스캔오브제이.닫다();
}
}

Java는 입력이 정확히 true 또는 false가 아닌 한 오류 메시지를 발행하므로 else 대신 else if가 사용되었습니다.

print와 println 메소드의 차이점은 print는 현재 줄의 입력을 예상하고 println은 다음 줄의 입력을 예상한다는 것입니다.

nextByte() 메서드

ASCII 문자 집합에서 문자는 1바이트입니다. 그러나 일부 동부 문자 집합에서는 문자가 1바이트 이상으로 구성될 수 있습니다. 문자 집합과 관계없이 nextByte 메서드는 입력의 다음 바이트를 읽고 유효성을 검사합니다. 이를 위해 다음 코드를 사용할 수 있습니다.

수입 java.util.스캐너;

공공의 수업클래스{
공공의 공전 무효의기본( []인수) {
체계 ..인쇄('유형 번호<128, press Enter: ');
스캐너 scanObj= 새로운스캐너( 체계 .~에);

바이트bt=스캔오브제이.넥스트바이트();
체계 ..인쇄(bt);

스캔오브제이.닫다();
}
}

이 코드에 대해 127보다 큰 숫자나 알파벳 문자를 입력하면 오류 메시지가 나타납니다.

nextInt() 메서드

다음 정수 토큰을 입력으로 사용하는 경우에도 유효성을 검사하고 수락할 수 있습니다. 다음 코드를 사용할 수 있습니다.

수입 java.util.스캐너;

공공의 수업클래스{
공공의 공전 무효의기본( []인수) {
체계 ..인쇄('정수 입력: ');
스캐너 scanObj= 새로운스캐너( 체계 .~에);

정수하나에=스캔오브제이.nextInt();
체계 ..인쇄(하나에);

스캔오브제이.닫다();
}
}

선행 또는 후행 공백이 제거되었습니다. 이 코드의 경우 127보다 큰 값을 포함한 모든 정수 값이 허용됩니다. 이러한 nextXXX() 메서드를 사용하면 유효성 검사가 실패하면 오류 메시지가 발행됩니다.

nextBigInteger() 메서드

소프트웨어 엔지니어들은 새로운 것을 내놓는 것을 멈추지 않을 것 같습니다. 큰 정수는 값이 정수보다 훨씬 큰 정수입니다. 그러나 Java에서는 정수와 같은 방식으로 읽을 수 있습니다. 다음 코드는 이를 보여줍니다.

수입 java.util.스캐너;
수입 java.math.BigInteger;

공공의 수업클래스{
공공의 공전 무효의기본( []인수) {
체계 ..인쇄('큰 정수에 임의의 정수 입력: ');
스캐너 scanObj= 새로운스캐너( 체계 .~에);

큰 정수 하나에=스캔오브제이.nextBigInteger();
체계 ..인쇄(하나에);

스캔오브제이.닫다();
}
}

import 문에 유의하십시오. import java.math.BigInteger;. 또한 큰 정수 유형은 소문자 b가 아닌 대문자 B로 시작됩니다.

nextFloat() 메서드

다음 부동 토큰을 입력으로 사용하여 유효성을 검사하고 수락할 수도 있습니다. 다음 코드를 사용할 수 있습니다.

수입 java.util.스캐너;

공공의 수업클래스{
공공의 공전 무효의기본( []인수) {
체계 ..인쇄('모든 부동 소수점 입력: ');
스캐너 scanObj= 새로운스캐너( 체계 .~에);

뜨다하나에=스캔오브제이.넥스트플로트();
체계 ..인쇄(하나에);

스캔오브제이.닫다();
}
}

부동 소수점 수의 예는 23.456입니다. 선행 또는 후행 공백이 제거되었습니다.

nextDouble()

입력으로 다음 이중 토큰도 유효성을 검사하고 수락할 수 있습니다. 다음 코드를 사용할 수 있습니다.

수입 java.util.스캐너;

공공의 수업클래스{
공공의 공전 무효의기본( []인수) {
체계 ..인쇄('더블 입력: ');
스캐너 scanObj= 새로운스캐너( 체계 .~에);

더블하나에=스캔오브제이.넥스트더블();
체계 ..인쇄(하나에);

스캔오브제이.닫다();
}
}

이중 숫자의 예는 23.456입니다. double 숫자는 오차 범위가 적기 때문에 float와 다릅니다. 선행 또는 후행 공백이 제거되었습니다.

nextLine() 메서드

nextLine() 메서드는 문자열을 위한 것입니다. 문자열이 Enter 키를 누른 후 키보드의 입력 행이면 개행 문자 ' '을 가질 수 있습니다. 다음 코드를 사용할 수 있습니다.

수입 java.util.스캐너;

공공의 수업클래스{
공공의 공전 무효의기본( []인수) {
체계 ..인쇄('가 있는 줄을 입력하세요.\N : ');
스캐너 scanObj= 새로운스캐너( 체계 .~에);

NS=스캔오브제이.다음줄();
체계 ..인쇄(NS);

스캔오브제이.닫다();
}
}

문자열 유형은 소문자 s가 아닌 대문자 S로 시작됩니다.

nextLine(), hasNext() 및 next() 메서드는 이 기사에서 이전에 사용되었습니다. 스캐너에는 다른 방법과 다른 원시 데이터 방법이 있습니다. 나중에 참조하십시오.

변수에 입력 할당

다음 코드와 같이 입력을 변수에 할당할 수 있습니다.

수입 java.util.스캐너;

공공의 수업클래스{
공공의 공전 무효의기본( []인수) {
스캐너 scanObj= 새로운스캐너( 체계 .~에);

체계 ..인쇄('이름을 입력하시오: ');
이름=스캔오브제이.다음줄();

체계 ..인쇄('나이 입력: ');
정수나이=스캔오브제이.nextInt();

체계 ..인쇄('급여 입력: ');
더블샐러리=스캔오브제이.넥스트더블();

체계 ..인쇄('이름: ' +이름+ ', 나이: ' +나이+ ', 샐러리: ' +샐러리);

스캔오브제이.닫다();
}
}

결론

Java의 Scanner는 java.util 패키지의 클래스입니다. 이 클래스는 문자열, 키보드, 파일 또는 네트워크 소켓에서 입력을 읽는 것을 목표로 합니다. 이 기사는 주로 키보드에서 입력을 읽고 터미널 창에 결과를 표시하는 데 집중했습니다. 유사한 아이디어를 사용하여 문자열, 파일 또는 네트워크 채널에서 입력을 읽을 수 있습니다.

키보드 입력의 전체 줄을 읽으려면 nextLine() 메서드를 사용합니다. 문자열로서의 행은 hasNext() 및 next() 메서드와 while 루프를 사용하여 토큰으로 분할할 수 있습니다. 분할을 위한 기본 구분 기호는 공백이지만 프로그래머는 다른 구분 기호를 선택할 수 있습니다. 필요한 경우 Ctrl+z를 수행하여 while 루프를 중지하는 것을 잊지 마십시오. 이 문서에서 다루지 않은 다른 체계를 사용하여 선행 및 후행 공백을 제거할 수 있습니다. 토큰의 유효성 검사는 이 문서에서 다루지 않은 다른 체계를 사용하여 수행할 수도 있습니다.

기본 값은 nextBoolean(), nextByte(), nextInt() 등을 사용하여 읽을 수 있습니다. 이러한 nextXXX() 메서드는 유효성 검사를 수행하고 선행 및 후행 공백도 제거합니다.

Java 스캐너에는 더 많은 방법이 있습니다. 그러나 이 문서에서는 스캐너의 기본 사용에 대해 설명했습니다. 토큰 선택은 실제로 정규식 기술을 사용하여 수행됩니다. 정규 표현식 기술의 사용은 다른 시간 동안 논의됩니다.