콘솔 입출력
콘솔 : 사용자의 입력을 받거나 사용자에게 문자열을 출력해 주는 역할을 하는 것을 통칭하는 말
콘솔 출력 : 사용자에게 문자열을 보여 주는 것 (System.out을 사용)
* PrintStream : 콘솔에 값을 출력할 때 사용되는 클래스
* System.err : System.out과 동일한 역할, 오류 메시지를 출력할 때 사용
콘솔 입력 : 출력된 질문에 사용자가 답변을 입력하는 것 (System.in을 사용)
* InputStream : 자바의 내장 클래스 (필요할 때마다 임포트해서 사용하기), read 메서드는 1byte 크기의 사용자의 입력을 받아들이며 int자료형으로 저장된다.
* 입력 스트림 : 사용자가 전달한 1byte의 데이터 또는 3byte의 데이터
* InputStreamReader : byte 대신 문자로 입력 스트림을 읽음
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class Sample {
public static void main(String[] args) throws IOException {
InputStream in = System.in;
InputStreamReader reader = new InputStreamReader(in);
char[] a = new char[3]; //byte대신 char 배열로 사용
reader.read(a);
System.out.println(a);
}
}
* BufferedReader : 길이에 상관없이 사용자가 입력한 값을 모두 받아들임
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
public class Sample {
public static void main(String[] args) throws IOException {
InputStream in = System.in;
InputStreamReader reader = new InputStreamReader(in);
BufferedReader br = new BufferedReader(reader);
String a = br.readLine();
System.out.println(a);
}
}
* Scanner
import java.util.Scanner;
public class Sample {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println(sc.next());
}
}
java.util.Scanner 클래스를 import 해야 함
- next: 토큰을 읽어 들일 수 있다.
- nextLine: 라인을 읽어 들일 수 있다.
- nextInt: 정수를 읽어 들일 수 있다.
파일 입출력
파일 쓰기
* FileOutputStream 클래스로 파일 생성 (생성자의 입력으로 파일명을 넘겨주어야 함)
import java.io.FileOutputStream;
import java.io.IOException;
public class Sample {
public static void main(String[] args) throws IOException {
FileOutputStream output = new FileOutputStream("c:/out.txt");
for(int i=1; i<11; i++) {
String data = i+" 번째 줄입니다.\r\n";
output.write(data.getBytes()); //byte 단위로 써야 하므로 String을 byte 배열로 바꾸어 줌
}
output.close();
}
}
* FileWriter : byte 배열 대신 문자열 사용 가능
import java.io.FileWriter;
import java.io.IOException;
public class Sample {
public static void main(String[] args) throws IOException {
FileWriter fw = new FileWriter("c:/out.txt");
for(int i=1; i<11; i++) {
String data = i+" 번째 줄입니다.\r\n";
fw.write(data);
}
fw.close();
}
}
* PrintWriter : \r\n을 덧붙이는 대신 println 메서드 사용 가능
import java.io.IOException;
import java.io.PrintWriter;
public class Sample {
public static void main(String[] args) throws IOException {
PrintWriter pw = new PrintWriter("c:/out.txt");
for(int i=1; i<11; i++) {
String data = i+" 번째 줄입니다.";
pw.println(data);
}
pw.close();
}
}
파일에 내용 추가하기 : 이미 작성된 파일을 추가 모드로 열어서 추가할 내용 작성
파일 읽기
* FileInputStream 클래스 이용
import java.io.FileInputStream;
import java.io.IOException;
public class Sample {
public static void main(String[] args) throws IOException {
byte[] b = new byte[1024];
FileInputStream input = new FileInputStream("c:/out.txt");
input.read(b);
System.out.println(new String(b)); // byte 배열을 문자열로 변경하여 출력
input.close();
}
}
* 파일을 한 줄 단위로 읽어 들이기 - FileInputStream 대신 FileReader와 BufferedReader의 조합 사용
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class Sample {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("c:/out.txt"));
while(true) {
String line = br.readLine();
if (line==null) break; // 더 이상 읽을 라인이 없을 경우 while 문을 빠져나간다.
System.out.println(line);
}
br.close();
}
}
Quiz
1. Java에서 표준 출력에 사용되는 클래스는 무엇인가요?
B) System
2. System.out.println()에서 println의 역할은 무엇인가요?
B) 화면에 내용을 출력한다.
3. Java의 입출력 클래스 중 버퍼를 사용하여 효율적인 입출력을 제공하는 클래스는 무엇인가요?
B) BufferedReader
4. 파일에 텍스트를 쓰기 위해 가장 많이 사용되는 클래스는?
B) FileWriter
5. Java의 Scanner 클래스는 어떤 패키지에 속해 있나요?
B) java.util
6. 다음 중 System.out.println()에서 out의 역할은 무엇인가요?
B) 표준 출력 스트림
7. 파일에서 데이터를 읽어오는 대표적인 클래스는 무엇인가요?
A) FileReader
8. Java의 BufferedWriter 클래스는 어떤 기능을 제공하나요?
D) 텍스트를 버퍼에 쓰고 출력 성능을 향상시킨다.
9. InputStream 클래스의 역할은 무엇인가요?
B) 데이터를 입력받는다.
10. FileReader와 FileWriter의 차이점은 무엇인가요?
B) FileReader는 파일을 읽고, FileWriter는 데이터를 파일에 쓴다.
코딩 테스트
#13241
import java.util.Scanner;
public class Main {
public static long gcd(long a, long b) {
while (b != 0) {
long temp = b;
b = a % b;
a = temp;
}
return a;
}
public static long lcm(long a, long b) {
return (a / gcd(a, b)) * b;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
long a = scanner.nextLong();
long b = scanner.nextLong();
System.out.println(lcm(a, b));
scanner.close();
}
}
#25305
import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int totalStudents = scanner.nextInt();
int awardCount = scanner.nextInt();
Integer[] scores = new Integer[totalStudents];
for (int i = 0; i < totalStudents; i++) {
scores[i] = scanner.nextInt();
}
Arrays.sort(scores, Collections.reverseOrder());
System.out.println(scores[awardCount - 1]);
}
}
'WINK-(Web & App) > JAVA 스터디' 카테고리의 다른 글
[2024-2 Java 스터디] 강보경 #5주차 (0) | 2024.11.14 |
---|---|
[2024-2 Java 스터디] 김지나 #5주차 "6장" (0) | 2024.11.14 |
[2024-2 Java 스터디] 김재승 #5주차 (0) | 2024.11.12 |
[2024-2 Java 스터디] 김재승 #4주차 (2) | 2024.11.11 |
Java[2024-2 Java 스터디] 이민형 #4주차 (5-5장) (0) | 2024.11.07 |