Dev/Java
Java - 입력 ( Scanner )
surimi🍥
2020. 8. 10. 16:19
반응형
// 자바에서 입력은 우리가 기능을 직접 만들거나 호출해서 쓰는것이 아니라
// 클래스 변수를 만들어서 써야한다.
// 우리가 만들어야 할 클래스 변수는 Scanner 클래스의 변수이다.
// 하지만 Scanner 클래스는 외부 패키지(java.util)에 있는 클래스이기 때문에
// 우리가 import라는 예약어를 통해서
// 우리 클래스에 Scanner가 어디에 있다를 말해주어야 한다.
import java.util.Scanner;
public class Ex10Scanner {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//스캐너는 지정한 위치에서 입력된 문자의 흐름을
//버퍼메모리에 저장하고
//거기서 특정 양식에 맞게 읽어온다.
//1. int 입력
System.out.print("정수를 입력하세요: ");
int number = scanner.nextInt();
System.out.println("사용자가 입력한 number: "+number);
//2. double 입력
System.out.print("실수를 입력하세요: ");
double myDouble = scanner.nextDouble();
System.out.println("사용자가 입력한 double: "+myDouble);
//3. 문자열 입력
// 문자열 입력에는 한가지 버그가 존재한다.
// nextInt(), nextDouble()등의 숫자를 입력하는 메소드 이후에
// nextLine()을 실행하면, 버퍼메모리에 남아있는 엔터키때문에
// 자바가 사용자가 아무런 입력없이 입력을 종료했구나 하고 착각하는 버그가 있다.
// 즉 우리가 정수나 실수 입력 후에 Strting을 입력하기 위해서는
// 버퍼메모리를 한번 비워주어야 한다.
// 버퍼메모리를 비워주기 위해서는 scanner.nextLine()을 한번 더 적어주되
// 아무데도 할당 시키지 않으면 된다.
// 단 이클립스의 자동완선 기능이 잘못 선택해서
// scanner.nextLine()이 아닌
// scanner.hasNextLine()이 실행되면
// 버퍼메모리가 비워지지 않으므로 버그가 해결되지 않는다.
// 주의해서 nextLine()인지를 확인하자!
scanner.nextLine();
System.out.print("이름을 입력하세요: ");
String name = scanner.nextLine();
System.out.println("사용자의 이름은 "+name+"입니다.");
//scanner와 같이 메모리를 참조하는 변수는 항상
//close() 메소드를 제일 마지막에 적어주는 것이 좋다.
scanner.close();
}
}
반응형