[4] 입력 받기
- AM 6:02
- by
- 410
용도: 사용자가 키보드로 입력한 데이터를 받아서 저장한다.
문법: (여러줄)
설명: import java.util.Scanner; 을 이용하여 java.util 에 있는 Scanner 클래스를 불러들인다. 그리고, Scanner 메서드 이름 = new Scanner(System.in); 으로 메서드를 생성한다. 그리고 (데이터 타입) (할당 이름) = (메서드 이름).next(데이터 타입)(); 으로 입력을 받는다. 필자는 메서드 이름을 주로 input 으로 하여 Scanner input = new Scanner(System.in); 으로 쓴다.
int 는 int (할당 이름) = input.nextInt();
double 은 double (할당 이름) = input.nextDouble();
String 은 String (할당 이름) = input.next();
String 은 String (할당 이름) = input.nextLine();
*차이점: next(); 은 스페이스바를 문자 처리 하지 않고 스페이스 뒤의 문자는 무시해 버리지만, nextLine(); 은 스페이스바를 포함한 모든 문자열을 저장한다. 필자는 주로 nextLine(); 을 이용한다.
예제:
import java.util.Scanner;
public class EX{
public static void main(String[]args){
Scanner input = new Scanner(System.in);
System.out.println("숫자데이터를 입력하세요");
int numdat = input.nextInt();
System.out.println("숫자데이터를 입력하세요");
String sdat = input.nextLine();
System.out.println("저장된 데이터: " + numdat + ", " + sdat);
}
}
오류: 그런데 이렇게 작성을 하였을때 String에서 받는 데이터는 아무것도 없게 된다. 이유는 int 에서 받은 엔터를 문자처리 하여 sdat 공간에 넣어버리는 것이다. 그렇기 때문에 제대로 된 입력을 받기 위해서는 Integer 라는 클래스 메서드를 이용해야 한다. 새로운 예제는 이러하다:
import java.util.Scanner;
public class EX{
public static void main(String[]args){
Scanner input = new Scanner(System.in);
System.out.println("숫자데이터를 입력하세요");
String ndat = input.nextLine();
int numdat = Integer.parseInt(ndat);
System.out.println("문자데이터를 입력하세요");
String sdat = input.nextLine();
System.out.println("저장된 데이터: " + numdat + ", " + sdat);
}
}
이렇게 하면 Integer.parseInt 가 ndat 의 숫자값을 추출해 내어 numdat 에 저장하게 된다. 물론 엔터는 문자처리를 하지 않는다.
출력 결과:
숫자데이터를 입력하세요
123
문자데이터를 입력하세요
abcd
저장된 데이터: 123, abcd
Process finished with exit code 0

0 개의 댓글:
댓글 쓰기
참고: 블로그의 회원만 댓글을 작성할 수 있습니다.