우리가 컴퓨터로 코드를 입력할시에는 반드시 우리가 입력해놓은 값 뿐만 아니라 사용자에게 값을 요구해야할때가 있다. 그럴때 사용하게 되는데 Scanner 객체인데 아래와 같이 사용하면된다.
import java.util.Scanner;
public class TestScanner {
public static void main(String[] args) {
int age;
Scanner sc = new Scanner(System.in); // Scanner 객체 생성
System.out.print("나이를 입력하세요: ");
age = sc.nextInt(); // int 타입 입력
System.out.println("당신의 나이는 " + age + "살 입니다");
sc.close(); // Scanner 사용이 끝나면 반드시 close() 해주어야 함
} // end main()
} // end class
위에서 가장 중요한것은
Scanner객체를 사용하기위해 java의 util이란곳에서 Scanner를 import(들여오기)를 해야한다.
(단축키로는 Ctrl+Shift+O를 입력하면 된다)
그렇지않고선 java는 위와같은
Scanner sc = new Scanner(System.in);을 인식하지 못한다.
그리고 위의 Scanner문장은 거의 모든 사람들이 비슷하게 사용하기때문에 위의 구문은 되도록이면 계속 적어서 잊지 않게끔 손에 익게끔 해주는 연습이 필요한 구문이다.(필수암기)
그리고 sc.close(); 를 마지막에 꼭 붙여줘야한다. 위치는 입력값을 받고난 뒤면 어디에 있든 상관없다. 하지만 맨밑에 적는이유는 이런 종료구문이나 객체 사용구문은 마지막에 한데 모아두는게 보기 용이하다는 점에서 Main 마지막에 적어준것이다.
int 형식뿐 아니라 다양한 형식도 입력이 가능하다.
sc.next까지 입력하고 CTRL+space를 누르게 되면 다양한 형식들의 입력방식이 나오는데 여기서 원하는걸 입력받으면 된다.
문자 하나를 입력받을땐
특이하게 sc.next().CharAt(index)값이 들어간다. 인덱스값에 받고자하는 글자의 번째수를 입력하면 된다.
ABCDE를 입력후 인덱스가 1이면 A 2이면 B가 입력되는것이다.
Stirng계열의 입력은
sc.nextLine()으로 입력받는데 이놈은 Enter이전까지의 문자들을 모두 입력받는다.
희한한 케이스.
nextInt();하고 난뒤 nextLine();으로 받게되면 Line에 입력되는 값은 enter하나 밖에 없다.
이유는 nextInt는 enter이전의 int형식의 값만 입력받게되고 enter는 buffer에 남아있게 된다.
그래서 nextLine()에서 엔터만 입력받게 되고 그다음값은 넘어오지 않는다.
해결책은 nextLine();을 하나 더 입력하고, 그다음에 변수에다가 nextLine();을 입력해줘야한다.
위의 스캐너 입력값들은 전부다 buffer라는 임시저장공간에 저장되어있다가 엔터를 누를시 컴퓨터가 거기안에서 가져온다. 컴퓨터는 우리가 쓰는 타자를 기다려줄순없다. 타자를 쓰는동안에도 여러가지 일을해야하기 때문에 buffer에 저장해놓고 우리가 끝이라는 명령(enter)를 입력하면 그때서야 입력을 한다.
'Java 수업 > 수업내용정리' 카테고리의 다른 글
자바의 제어문 (1) | 2019.05.19 |
---|---|
연산자 및 리터럴(literal)에 관한 내용 (1) | 2019.05.19 |
이클립스 사용시 유용한 단축키 (1) | 2019.05.19 |
이클립스 다운 및 환경 셋팅 (0) | 2019.05.19 |
Java설치 및 환경구성 (0) | 2019.05.19 |