티스토리 뷰

Java

자바의 입출력

Alledy 2019. 4. 24. 17:25

자바의 출력

  • System.out.println(), System.out.print()

    • 출력할 데이터를 한 개만 전달 가능하다.
    • 전달할 수 있는 데이터타입에 제한이 거의 없다.
    • 숫자는 십진수만 출력한다. 실수를 출력할 시에는 일정한 위치에서 자른다. printf는 이와 같은 단점을 보완한다.
  • System.out.printf()

    • 일반문자 및 포맷문자를 작성할 수 있다.

    • 포맷문자의 형식은 % + 정해진 문자 이다.

      • %d // 십진수 출력. %,d는 숫자의 천단위마다 콤마를 찍어준다.
      • %s // 문자열 출력. %10s 는 10자리 문자열을 만든다. 입력한 문자열이 10자리보다 짧을 경우 블랭크로 채운다. 기본적으로 우정렬이고 좌정렬하고 싶으면 %-10s라고 쓰면 된다.
      • %c // 문자 출력
      • %f // 소수점 출력. %.3f => 소수점 이하 3번째자리까지 출력.

 

 

자바 입력 클래스

  • Scanner

    import java.util.Scanner; // import해오지 않으면 에러가 난다. 
    
    public class Main{
    	public static void main(String args[]){
    		Scanner sc = new Scanner(System.in);
    		int a, b;
    		a = sc.nextInt();
    		b = sc.nextInt();
    		System.out.println(a + b);
    	}
    }
    

     

  • BufferedReader

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String[] s = br.readLine().split(" ");
    
    // s[0] = "1"; Integer.parseInt(s[0]) => 1
    

     

  • StringTokenizer

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StringTokenizer st = new StringTokenizer(br.readLine());
    
    st.nextToken();
    

 

 

EOF(End of File)

주어지는 입력을 그대로 출력하기

 

  • Scanner

    Scanner sc = new Scanner(System.in);
    
    while(sc.hasNextLine()) {
        System.out.printlin(sc.nextLine());
    }
    
    while(sc.hasNextInt()) {
        System.out.println(sc.nextInt());
    }
    

     

  • BufferedReader

    BufferdReader br = new BufferedReader(new InputStreamReader(System.in));
    String input = "";
    
    while((input = br.readLine()) != null) { // String input에 대입하는 것은 입력받은 줄을 읽겠다는 의미. 
        // ...
    }
    

    위 코드를 실행시키려고 했을 때 예외처리에 대한 오류가 떠서 예외처리를 위한 코드를 넣었다.

    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.IOException;
    
    public class Main{
    	public static void main(String args[]){
            try(BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
                String input = "";
            
                while((input = br.readLine()) != null) {
                    System.out.println(input);
                }    
            } catch(IOException e) {      
                System.err.format("IOException: %s%n", e);
            } 
    	}
    }
    

     

    +) 문제 추가

    3 // 첫번째줄 인풋은 주어질 숫자의 개수
    123 // 두번째줄 인풋은 숫자들 -> 이 숫자들을 전부 더한 수를 출력하시오
    
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.IOException;
    
    public class Main {
    
    	public static void main(String[] args) {
            try(BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
                String n = br.readLine();
                String[] s = br.readLine().split("");
                int sum = 0;
                
                for(int i = 0 ; i < s.length ; i++ ) {
    				sum += Integer.parseInt(s[i]);
    			}
                System.out.println(sum);
            } catch(IOException e) {
                System.err.format("IOException: %s%n", e);
            }
    	}	
    }
    

     

+) StringTokenizer는 문자열을 입력하는 것이 아니라 가공하는 역할을 하기 때문에 EOF 처리에는 맞지 않는다고 한다.

'Java' 카테고리의 다른 글

자바의 2차원 배열  (0) 2019.04.26
자바의 1차원 배열  (0) 2019.04.25
조건문  (0) 2019.04.24
자바의 특징, 변수 등  (0) 2019.04.23
Switch  (0) 2019.03.18
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 30 31
글 보관함