728x90
반응형
- nextint(): int 값을 입력 받을 때 사용함.
- Scanner scanner = new Scanner(System.in);
- int N = scanner.nextInt();
- (char)System.in.read: char를 입력 받을 때 사용함.
- char ch;
- ch = (char)Ststem.in.read();
- 여러 줄로 입력 받을 경우 \n이 인식이 된다.
- nextLine(): char를 여러개 입력 받을 때 사용함.
- char , b;
- string str;
- Scanner scanner = new Scanner(System.in)
- str = scanner.nextLine();
- a = str.charAt(0);
- b = str.charAt(2);
Scanner 클래스의 next()와 nextLine() 메서드는 모두 사용자의 입력을 받지만, 차이점이 있다.
next(): 공백, 탭, 개행문자 등을 기준으로 하나의 토큰(token)를 읽습니다. 즉, 사용자가 여러 단어를 한 줄에 입력하면 각 단어를 따로따로 읽음.
nextLine(): 개행문자(엔터)가 나올 때까지 전체 라인을 하나의 문자열로 읽음. 이 메서드는 공백이 포함된 문장도 하나의 문자열로 인식함.
빠르게 입출력 하기
1. BufferedReader(): 버퍼를 사용하여 효율적으로 읽음, InputStreamReader: 문자 기반 스트림으로 변환
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- int n = Integer.parseInt(br.readlone());
- char cr = (char)br.read();
- String str = br.readLine();
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// String 타입 입력 받기
System.out.print("Enter a string: ");
String str = br.readLine();
System.out.println("You entered string: " + str);
// int 타입 입력 받기
System.out.print("Enter an integer: ");
int num = Integer.parseInt(br.readLine());
System.out.println("You entered integer: " + num);
// char 타입 입력 받기
System.out.print("Enter a character: ");
// readLine() 메서드를 사용하여 문자열을 읽어들인 후, 이 문자열의 첫 번째 글자를 가져옵니다.
char ch = br.readLine().charAt(0);
System.out.println("You entered character: " + ch);
}
}
2. String에 대한 split() 대신 StringTokenizer을 사용한다.
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter a line with multiple words:");
String line = br.readLine();
StringTokenizer st = new StringTokenizer(line, " "); // 공백을 기준으로 문자열 분리
while (st.hasMoreTokens()) { // 토큰이 있을 경우 계속 반복
String word = st.nextToken(); // 토큰(단어) 가져오기
System.out.println(word);
}
}
}
3. BufferedWriter (더 빠른 출력)
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String str = "Hello, world!";
int num = 12345;
char ch = 'A';
// String 타입 출력
bw.write(str);
bw.newLine(); // 줄바꿈
// int 타입 출력 - 숫자를 문자열로 변환하여 출력해야 함
bw.write(Integer.toString(num));
bw.newLine(); // 줄바꿈
// char 타입 출력 - 문자도 문자열로 변환하여 출력해야 함
bw.write(Character.toString(ch));
bw.newLine(); // 줄바꿈
// 반드시 flush()나 close() 호출해서 버퍼를 비워주어야 합니다.
// 그렇지 않으면 버퍼에 남아있는 데이터가 완전히 쓰여지지 않을 수 있습니다.
bw.flush();
}
}
4. 총정리
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
// String 타입 입력 받기
System.out.print("Enter a string: ");
String str = br.readLine();
// StringTokenizer를 이용해 공백으로 분리된 단어들을 분리합니다.
StringTokenizer st = new StringTokenizer(str, " ");
while(st.hasMoreTokens()) {
bw.write(st.nextToken());
bw.newLine();
}
// int 타입 입력 받기
System.out.print("Enter an integer: ");
int num = Integer.parseInt(br.readLine());
// BufferedWriter를 이용해 정수형 데이터를 출력합니다.
bw.write(Integer.toString(num));
bw.newLine();
// char 타입 입력 받기
System.out.print("Enter a character: ");
char ch = br.readLine().charAt(0);
// BufferedWriter를 이용해 문자형 데이터를 출력합니다.
bw.write(Character.toString(ch));
bw.newLine();
bw.flush();
}
}728x90
반응형
'이론 > Java' 카테고리의 다른 글
| OOP) 클래스와 객체 (0) | 2024.01.02 |
|---|---|
| Java) 변수와 데이터 타입, 연산자 (0) | 2023.12.27 |
| Java) 데이터 타입, pirnt(), println(), printf() (0) | 2023.08.29 |
| Java) this() (0) | 2023.08.11 |
| Java, BigDecimal (1) | 2023.08.11 |