티스토리 뷰

 

[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

댓글