입력이 공백 단위로 주어지므로,
입력방법을 처리하는데는 크게 두가지 방법이 있다.
1. Scanner를 이용.
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int A = in.nextInt();
int B = in.nextInt();
System.out.println(A+B);
in.close();
}
}
가장 기초적인 방법.
Scanner는 가장 처음 키보드로 입력 받기 위한 방법으로 쓰이는 클래스이다.
Scanner 객체를 생성하는 동시에 입력한 값을 Byte단위로 읽어주는 System.in을 선언한다.
Scanner in = new Scanner(System.in);
// Reference Type
// >> Class Type - String Class
String 문자열_space = in.next();
String 문자열_Enter = in.nextLine();
// Primitive Type
// >> boolean Type
boolean 부울 = in.nextBoolean();
// >> Numeric Type
// >> >> Integer Type
byte 바이트 = in.nextByte();
short 쇼트 = in.nextShort();
int 정수 = in.nextInt();
long 롱 = in.nextLong();
// >> >> Floating Point Type
double 더블형 = in.nextDouble();
float 플롯 = in.nextFloat();
즉, 우리는 int 정수를 받아오고 싶으니 in.nextInt(); 를 사용했다.
변수의 자료형에 맞게 입력해주면 된다.
방법 2.
BufferedReader를 쓰는 방식. BufferedWriter 와 객체 생성 방법이 유사하다.
BufferedReader의 경우 문자열을 받는 대표적인 방법은 read()와 readLine()이다.
readLine()은 한 행을 읽어오고, read()는 한 문자만 읽어온다.
따라서, 특별한 경우가 없는 한 대부분 readLine()을 쓴다.
또, 문자열 분리 방법에는 2가지 방법이 있다.
1. StringTokenizer 클래스 이용
2.split()이용하는 방법.
StringTokenizer가 split()보다 성능면에서 좋다.
1. StringTokenzier는 java.util 패키지에 있으므로 import 해준다음 객체 생성을 해준다.
2. 객체 생성시 StringTokenzier("문자열", 구분자); 를 해주면 된다.
3. 구분 된 변수를 꺼낼때는 차례로 nextToken(); 을 해주면 문자열을 반환해준다.
4. 이때 반환시킨 문자열은 반환됨과 동시에 해당 객체에서 사라지게 된다.
문자열을 반환했으니 Integer.parseInt()로 int형으로 반환시켜준다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] arges) 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);
}
}
2. br.readLine(); + split(" ");
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] arges) 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);
}
}
- br.readLine()을 통해 읽어온 것을 split(" ")하여 공백 단위로 나눠준 뒤 String 배열에 각각 저장.
쓰기에는 편하지만, 나중에 문자열을 다루고, 데이터 양이 많아지게 되면 StringTokenizer보다 성능이 낮아 수행 시간 차이가 발생한다.
위에서부터
BufferedReader + split() 사용,
BufferedReader + StringTokenizer() 사용
Scanner 사용 한 경우이다.
Stream 이란? 데이터의 흐름이다.
단방향으로, 입력과 출력이 동시에 발생할 수는 없다.
자바에서 가장 기본이 되는 입력 스트림은 InputStream이다.
System.in 은 바로 이 InputStream 타입의 필드이다.
즉, System클래스의 in이라는 필드는 InputStream의 정적 필드이다.
자바는 String을 처리할 때
내부(메모리 상)에서는 UTF-16 BE 인코딩으로 문자열을 저장하고,
송수신에서는 직렬화가 필요한 경우 UTF-8(modified UTF-8)을 사용하고,
문자열을 입/출력할 때만 사용자가 지정한 인코딩 값 or 운영체제의 기본 인코딩 값으로 문자열을 인코딩한다.
ㄷ
'Programming > 알고리즘' 카테고리의 다른 글
[백준] 10869번 - 사칙연산 -Java[자바] (0) | 2022.11.22 |
---|---|
[백준] 1008번 - A/B JAVA [자바] (0) | 2022.11.22 |
[백준] 2557번 : Hello World - JAVA [자바] (0) | 2022.11.22 |
[python 파이썬] 백준 2839 설탕배달 (0) | 2022.03.10 |
[python 파이썬] 백준 10250 ACM호텔 (0) | 2022.03.10 |