1. Scanner 클래스
# 콘솔 창으로부터 데이터 입력받기
# JDK 1.5버전부터 추가되었다.
# 입력하라는 안내문구는 System.out.print();를 사용하여 개행하지 않는 것이 좋음
1) import java.util.Scanner;
2) Scanner sc = new Scanner(System.in);
3) 안내문을 보여주자!
System.out.print("나이를 입력하세요: ");
4) int age = sc.nextInt();
5) sc.close();
sc.next() : 단어
sc.nextInt() : 정수
sc.nextDouble() : 실수
* 버퍼에서 하나씩 가져옴
-----------------------
sc.nextLine() : 문장
* 버퍼에서 한 번에 다 가져옴
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | package scannerex; import java.util.Scanner; public class ScannerTest01 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // Scanner 클래스는 숫자, 영문을 입력할 때는 그대로 입력 가능 // 한글을 입력할 때에는 마우스로 커서를 이동시킨 후 입력! // 입력을 받고자 할 때는 print()를 사용하여 개행시키지 않는 것이 좋다. System.out.print("이름을 입력하세요: "); String name = sc.next(); System.out.println("입력하신 이름은 " + name + "입니다."); System.out.print("나이를 입력하세요: "); int age = sc.nextInt(); System.out.println("입력하신 나이는 " + age + "세 입니다."); System.out.print("키를 입력하세요: "); double height = sc.nextDouble(); System.out.println("입력하신 키는 " + height + "cm 입니다."); // Scanner 끝내기 sc.close(); } } | cs |
5) next() VS nextLine()
# 단어들 사이의 공백을 기준으로 단어와 문장이 나뉜다.
# In Buffer > 서울시 / 마포구 / 서강로
sc.next() > 서울시
sc.nextLine() > 서울시 마포구 서강로
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | package scannerex; import java.util.Scanner; public class ScannerTest02 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("주소를 입력하세요: "); // String address = sc.nextLine(); String address = sc.next(); System.out.println(address); System.out.println(sc.next()); System.out.println(sc.next()); } } | cs |
# 설명
nextLine()은 버퍼에 있는 '서울시 마포구 연남동'을 한 번에 다 가져오지만
next()의 경우 단어 사이의 공백을 기준으로 하나씩 가져온다.
ex. 서울시 / 마포구 / 연남동
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | package scannerex; import java.util.Scanner; public class ScannerTest03 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // System.out.print("이름: "); // String name = sc.nextLine(); // // System.out.print("나이: "); // int age = sc.nextInt(); // // System.out.println(name + "님은 " + age + "세 입니다."); System.out.print("나이: "); int age = sc.nextInt(); sc.nextLine(); // 버퍼에 남아있는 엔터값 제거 System.out.print("이름: "); String name = sc.nextLine(); System.out.println(name + "님은 " + age + "세 입니다."); } } | cs |
# 설명
이름 > 나이 순으로 진행할때는 출력문이 정상적으로 출력되지만,
나이 > 이름 순으로는 이름을 입력하지 못하고 비정상적으로 출력된다.
나이를 입력하고 Enter를 쳤을 경우에 버퍼에는 '나이 / Enter' 이 들어있다.
나이는 nextInt()로 출력이 되었지만 이름을 작성하기도 전에
nextLine()에서는 버퍼의 Enter를 데이터로 받아와서 출력한다.
때문에 이름을 작성하기도 전에 최종 출력문이 나오는 것이다.
따라서 String name = sc.nextLine(); 이 Enter값을 받기 전에
중간에서 미리 sc.nextLine();을 해주어 Enter값을 제거하도록 한다.
6) int age = (int)String;
# 참조형 String은 기본형 타입으로 형 변환 안 됨
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | package scannerex; import java.util.Scanner; public class ScannerTest04 { public static void main(String[] args) { // 번거로움을 덜하기 위해 nextLine()만 사용하기 위해 형 변환! Scanner sc = new Scanner(System.in); System.out.print("나이 입력: "); int age = Integer.parseInt(sc.nextLine()); System.out.print("이름 입력: "); String name = sc.nextLine(); System.out.print("키 입력: "); double height = Double.parseDouble(sc.nextLine()); System.out.println("나이: " + age); System.out.println("이름: " + name); System.out.printf("키: %.1f", height); // %.1f > 반올림! } } | cs |
'JAVA > JAVA1' 카테고리의 다른 글
JAVA1_day07 | 조건문 if문 연습문제 (1) (1) | 2017.12.19 |
---|---|
JAVA1_day06 | 조건문 If문 (0) | 2017.12.19 |
JAVA1_day05 | 추가공부 (0) | 2017.12.14 |
JAVA1_day05 | 연산자 (0) | 2017.12.13 |
JAVA1_day04 | 추가공부 (0) | 2017.12.12 |