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
*해당 포스팅은 상단에 링크된 포스팅을 바탕으로 개인 공부 목적을 위해 작성되었으므로 자세한 내용은 위 링크를 확인해 주시기 바랍니다.
오늘도 진짜 빛과 소금 같은 글이 있다. 두고 두고 봐야하는 글.
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 |