자바
[자바 기초] 06. 스캐너(Scanner)
dev스카이
2024. 3. 26. 22:36
Scanner
System.out 을 통해서 출력을 했듯이, System.in 을 통해서 사용자의 입력을 받을 수 있다. 그런데 자바가 제공하는 System.in 을 통해서 사용자 입력을 받으려면 여러 과정을 거쳐야해서 복잡하고 어렵다. 자바는 이런 문제를 해결하기 위해 Scanner 라는 클래스를 제공한다. 이 클래스를 사용하면 사용자 입력을 매우 편리하게 받을 수 있다.
형식
import java.util.Scanner;
- Scanner를 쓰기 위해선 java.util 패키지를 import 해주어야 한다.
Scanner scanner = new Scanner(System.in);
- 그 다음, main 내에 Scanner의 객체를 만든다.
- Scanner는 System.in을 사용해서 사용자의 입력을 편리하게 받도록 도와준다.
예제 - Scanner를 이용하여 문자열, 정수, 실수를 입력받고 출력해본다.
Scanner1
package scanner;
import java.util.Scanner;
public class Scanner1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("문자열을 입력하세요: ");
String str = scanner.nextLine(); //입력을 String으로 가져온다.
System.out.println("입력한 문자열: " + str);
System.out.print("정수를 입력하세요: ");
int intValue = scanner.nextInt(); //입력을 int로 가져온다.
System.out.println("입력한 정수: " + intValue);
System.out.print("실수를 입력하세요: ");
double doubleValue = scanner.nextDouble(); //입력을 double로 가져온다.
System.out.println("입력한 실수: " + doubleValue);
}
}
- scanner.nextLine() - 엔터( \n )을 입력할 때 까지 문자를 가져온다.
- scanner.nextInt() - 입력을 int 형으로 가져온다. 정수 입력에 사용한다.
- scanner.nextDouble() - 입력을 double 형으로 가져온다. 실수 입력에 사용한다.
❗주의
타입이 다르면 오류가 발생하므로 타입에 맞게 입력을 하도록 하자.
🌟 println() vs print()
- println() - 출력을 한 후 다음 라인으로 넘긴다.
- 콘솔 창에 문자열이나 정수 등을 입력하고 엔터 키를 치면 \n (개행 문자)라는 문자를 남긴다. 이 문자는 영어로 new line character, 한글로 줄바꿈 혹은 개행 문자라고 하고, 이름 그대로 새로운 라인으로 넘기라는 뜻이다. 콘솔에서는 이 문자를 보고 다음 라인으로 넘긴다.
- print() - 출력을 한 후 다음 라인으로 넘기지 않는다.
예제 - while문을 사용해서 프로그램이 종료할 때까지 문자열 입력을 계속 받고 출력하는 프로그램을 작성해본다.
- 종료 조건은 입력받은 문자열이 exit일 경우에 종료한다.
ScannerWhile1
package scanner;
import java.util.Scanner;
public class ScannerWhile1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.print("문자열을 입력하세요(exit: 종료):");
String str = scanner.nextLine();
if (str.equals("exit")) {
System.out.println("프로그램을 종료합니다.");
break;
}
System.out.println("입력한 문자열: " + str);
}
}
}
- 입력 받은 문자가 "exit" 이면 "프로그램을 종료합니다."를 출력하고 break 문을 통해서 while문을 빠져나간다.
Scanner 말고도 InputStreamReader(), BufferedReader() 등이 있는데 이건 나중에 다루도록 한다.