JAVA에서 해결된 스캐너 클래스 nextLine() 문제
이 기사에서는 스캐너의 기본 주제와 nextLine() 메서드를 사용하는 동안 발생하는 일반적인 오류를 강조합니다. 그럼 늦었지만 본론으로 들어가 볼까요!🤿
내용물
스캐너 클래스란?
스캐너 클래스는 java.util 패키지에 속합니다. 파일 객체를 전달하여 파일을 읽는 데 사용되는 int, char, double(모든 기본 유형), string과 같은 데이터 유형에 대한 입력을 얻는 데 사용됩니다. wrapper 클래스 개체에도 사용할 수 있습니다.
스캐너 객체를 통해 스캐너 클래스의 메서드에 액세스할 수 있습니다. 객체를 생성하는 동안 매개변수로
System.in
를 전달합니다. 이것은 입력이 표준 입력(키보드)을 통해 제공될 것임을 Java 컴파일러에 알려줍니다.//creating a scanner object
Scanner scan=new Scanner(System.in);
Scanner 클래스의 몇 가지 기본 메서드
스캐너 클래스를 사용하는 동안 알아야 할 몇 가지 기본 방법은 다음과 같습니다.
nextInt(): 입력의 다음 토큰을 int 값으로 스캔합니다.
int a=scan.nextInt();
nextDouble(): 입력의 다음 토큰을 double 값으로 스캔합니다.
double a=scan.nextDouble();
String s=scan.nextLine();
이것은 다음 섹션에서 더 명확하게 설명될 것입니다. Scanner 클래스에는 다른 다양한 메소드가 있으며 이를 확인할 수 있습니다here.
nextLine() 메서드가 입력을 건너뛰는 이유는 무엇입니까?
따라서 이것을 명확하게 이해하기 위해 예를 들어 시작하겠습니다.
public class ScannerExample {
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
System.out.println("Enter account number");
int account_num=sc.nextInt();
System.out.println("Enter account holder's name");
String name=sc.nextLine();
System.out.println("Enter the amount to deposit");
double amount=sc.nextInt();
System.out.print("Account number: "+account_num);
System.out.print("Name: "+name);
System.out.print("Amount: "+amount);
}
}
여기에서 우리는 각각의 스캐너 방법을 사용하여 3개의 변수
account_num
, name
, amount
에 대한 입력을 받고 있습니다earlier. 이제 출력을 확인해보자.예상 출력:
Account number: 154623
Name: john doe
Amount: 4000.0
우리가 얻는 출력:
Account number: 154623
Name:
Amount: 4000.0
차이점을 관찰하셨나요?🤔
nextLine()
에 대해 name
를 사용하여 제공한 입력은 건너뛰고 다음 입력으로 계속됩니다.왜 이런 일이 일어났습니까?
따라서
nextInt()
를 사용하여 account_num
를 얻었을 때 입력 154623이 끝날 때까지 스캔하고 다음과 같은 숫자를 읽은 후에도 커서가 그대로 유지됩니다.154623👆 //cursor position after reading input
nextLine()
가 공백을 허용하는 입력으로 문자열을 취하는 데 사용된다는 것을 알고 있습니다. 따라서
nextLine()
를 사용하면 커서가 있는 곳에서 스캔하고 빈 공간을 입력으로 사용합니다. 이것이 name
에 대해 빈 줄이 있는 이유입니다.이 문제를 해결하는 방법은 무엇입니까?
nextLine()
메서드를 사용할 수 있으므로 빈 공간을 제거하고 name
에 대한 입력을 제공할 수 있습니다. 코드는 다음과 같습니다. System.out.println("Enter account number");
int account_num=sc.nextInt();
sc.nextLine() //this takes away the empty space as input
System.out.println("Enter account holder's name");
String name=sc.nextLine();
nextLine()
를 사용하여 정수에 대한 전체 줄을 스캔하고 Integer.parseInt()
를 사용하여 int로 변환할 수 있으므로 nextLine()
줄 끝까지 읽고 parseInt()
데이터를 int로 변환합니다.System.out.println("Enter account number");
int account_num=Integer.parseInt(sc.nextLine());
System.out.println("Enter account holder's name");
String name=sc.nextLine();
따라서 int, double, float 등과 같은 입력을 얻기 위해 모든 방법을 사용한 후
nextLine()
를 사용할 때마다 이러한 접근 방식을 적용해야 합니다.이 글을 읽고 계시다면 글의 끝부분에 도달하셨고 오늘 새로운 사실을 알게 되셨습니다.😍
해피 자바잉!😊
Reference
이 문제에 관하여(JAVA에서 해결된 스캐너 클래스 nextLine() 문제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/laasyasetty/scanner-class-nextline-issue-resolved-in-java-4nc8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)