본문 바로가기
Computer Science/Algorithm

[JAVA] A + B

by soro.k 2022. 2. 14.

https://st-lab.tistory.com/12?category=827050 

 

[백준] 1000번 : A+B - JAVA [자바]

https://www.acmicpc.net/problem/1000 1000번: A+B 문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 A와 B가 주어진다. (0 < A, B < 10) 출력 첫째 줄에 A+B를 출력..

st-lab.tistory.com

*해당 포스팅은 상단에 링크된 포스팅을 바탕으로 개인 공부 목적을 위해 작성되었으므로 자세한 내용은 위 링크를 확인해 주시기 바랍니다.


 

오늘도 진짜 빛과 소금 같은 글이 있다. 두고 두고 봐야하는 글.

https://st-lab.tistory.com/41

 

JAVA [자바] - 입력 뜯어보기 [Scanner, InputStream, BufferedReader]

이 글을 지금 이 시점에 써야 할까 고민을 많이 했다. 사실 자바를 그냥 다룰 줄만 아는 것에 목표를 둔다면 이 글이 무의미할 수도 있다. 그러나 자바에 대해 조금이라도 관심이 있고 더 배우고

st-lab.tistory.com

 

Scanner
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();

System.out.println(a);

sc.close();
  • System.in은 입력한 값을 바이트 단위로 읽는 것을 뜻한다.
  • 변수의 자료형에 맞게 Scanner의 메서드를 사용하면 된다.(nextDouble, nextInt etc)

 

String 입력 메서드

  • next() : 문자열 입력 시 공백 전까지만 받음
  • nextLine() : 한 줄에 입력된 여러 문장들을 받음

 

🚨 next()와 nextLine()을 혼용해서 사용할 때는 공백을 주의하자!

next()에서 공백을 입력 받으면 공백 전 문자까지 저장하고 나머지 공백을 남겨 둔다. 이때 nextLine()으로 한 줄을 읽어들이게 되면 남은 공백과 함께 문자가 출력되기 때문에 원하는 결과값과 다를 수 있다.

public class Main {
	public static void main(String[] args) {
    
    	Scanner sc = new Scanner(System.in);
        
        String str1 = sc.next();			// I
        String str2 = sc.next();			// love
        String str3 = sc.nextLine();			//
        String str4 = sc.nextLine();			// dogs
        
        System.out.println(str1);			// I
        System.out.println(str2);			// love
        System.out.println(str3);			// 
        System.out.println(str4);			// dogs
    }
}
  • 'love'를 입력한 후에 남은 엔터(개행)로 인해 다음 str3는 입력되지 않고 넘어가게 된다.
  • 개행이 입력되지 않도록 하려면 next()와 nextLine() 사이에 sc.nextLine()을 추가하면 된다.

 

 

BufferedReader

String 입력 메서드

  • read() : 한 문자만 받음
  • readLine() : 한 행을 받음

 

💡 read()를 사용하는 것보다 readLine()을 사용하는 것이 편리한 이유

  • 입력한 문자 한 개를 아스키코드로 읽어 정수 형태로 반환되므로 입력한 값 그대로 출력하려면 계산이 추가로 필요하다.
  • 공백도 아스키코드 값으로 입력받기 때문에 원하는 결과값과 다를 수 있기 때문에 주의해야 한다.

 

자열 분리 방법

1. StringTokenizer 클래스(java.util 패키지)

split()보다 성능이 높아 시간을 단축할 수 있다.

public class Main {
	public static void main(String[] args) throws IOException {
    
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	
        String str = br.readLine();
        StringTokenizer st = new StringTokenizer(str, " ");
        int a = Integer.parseInt(st.nextToken());
        int b = Integer.parseInt(st.nextToken());
        
        System.out.println(a+b);
    
    }
}
  • StringTokenizer(문자열, 구분자);
  • nextToken()을 이용하여 구분된 변수를 꺼내 문자열을 반환해준다.

2. split()

public class Main {
	public static void main(String[] args) throws IOException {
    
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        String[] str = br.readLine().split(" ");
        int a = Integer.parseInt(str[0]);
        int b = Integer.parseInt(str[1]);
        
        System.out.println(a+b);
    }
}

 

 

 


ref.

'Computer Science > Algorithm' 카테고리의 다른 글

[JAVA] 곱셈  (0) 2022.02.22
[JAVA] 나머지  (0) 2022.02.22
[JAVA] 고양이  (0) 2022.02.12
[JAVA] We love kriii  (0) 2022.02.09
[JAVA] Hello World  (0) 2022.02.09