티스토리 뷰
[System.in]
1. System.in은 java.io.*; 를 import한다.
2. System.in을 이용해 값을 입력받을 때, 잘못된 값을 입력받은 경우를 대비해 항상 예외 처리를 해줘야 한다.
예외 처리 구문이 없으면 오류가 발생한다.
따라서, try/catch문을 사용하거나 시스템이 알아서 예외를 처리하는 IOException을 사용해 예외 처리를 해준다.
3. System.in.read 메소드는 인자가 없으면 입력한 값을 하나씩 읽어 들여 아스키 값으로 반환한다.
ex1) 한 글자를 입력
import java.io.*;
public class IOEx
{
public static void main(String[] args)
throws IOException
{
int i = System.in.read();
System.out.println("입력 값은 " + (char)i);
}
}
read 함수는 입력한 값의 아스키 코드 값을 반환하므로 i에는 입력한 값의 아스키 코드가 저장된다.
a를 입력하면 a가 출력되고 1을 입력하면 1이 출력되며, 123을 입력하면 1이 출력된다. (read 함수가 한 글자만 읽어들이기 때문에)
ex2) 여러 글자를 입력
import java.io.*;
public class IOEx2
{
public static void main(String[] args)
throws IOException
{
InputStreamReader var = new InputStreamReader(System.in); // 값을 입력
while(true)
{
int i = var.read(); // var에 입력된 값을 하나씩 읽어들여 아스키 코드를 i에 반환
if(i==-1) break; // ctrl+z를 누르면 반복문 탈출
System.out.println((char)i); // 아스키 코드 값을 문자로 변환하여 출력
}
}
}
var 변수에 여러 글자를 입력한다.
read 함수가 한 글자를 읽어들이기 때문에 모든 글자를 다 읽어들이도록 ctrl+z를 누를 때까지 while문이 실행되도록 한다.
한 글자를 읽어들일 때마다 그 값을 출력한다.
[Scanner]
1. Scanner는 java.util.Scanner;를 import 한다.
2. Scanner를 이용해 값을 입력받을 때는 예외 처리를 하지 않아도 된다.
3. Scanner의 nextLine() 메소드는 입력한 한 줄을 가져오고(엔터키 포함),
next(), nextInt() 메소드는 공백이나 엔터키로 구분된 하나의 단어를 각각 String형, int형으로 가져온다.
이 때, next(), nextInt() 메소드 사용 시 버퍼에 엔터키가 남아있을 수 있다 !
ex)
import java.util.*;
public class IOEx3
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("이름과 나이를 입력해주세요");
System.out.println("당신의 이름 : " + sc.next()); // next()는 문자열을 읽어들임
System.out.println("당신의 나이 : " + sc.nextInt()); // nextInt()는 정수를 읽어들임
}
}
이름 나이 를 입력하면, next()에 의해 문자열인 이름이 먼저 읽어지고 그 다음 nextInt()에 의해 정수인 나이가 읽어진다.
Scanner를 사용하는 것이 가장 간단하다.
'Java, JavaScript' 카테고리의 다른 글
[Java] 생성자(Constructor)와 this/super 키워드 (0) | 2019.04.26 |
---|---|
[Java] 클래스(Class) (0) | 2019.04.24 |
[Java] main 입출력 (0) | 2019.04.24 |
[Java] 배열 (0) | 2019.04.24 |
[Java] 자료형, 형 변환, 시프트 연산자 (0) | 2019.04.24 |