본문 바로가기

WINK-(Web & App)/JAVA 스터디

[2024-2 Java 스터디] 김재승 #5주차

반응형

목차

  • 콘솔 입출력
  • 파일 입출력

자바에서 콘솔과 파일을 통해 데이터를 입력하고 출력하는 방법을 알아보자.

콘솔 입출력은 사용자의 입력을 받고 프로그램의 출력을 보여줄 때, 파일 입출력은 데이터를 파일로 저장하거나 불러올 때 유용하게 사용된다.


 

1. 콘솔 입출력

자바의 콘솔 입출력은 Scanner와 System 클래스를 활용하여 데이터를 읽고 출력할 수 있다.

콘솔 입력 예제 (Scanner)

Scanner 클래스를 사용하면 간편하게 콘솔 입력을 받을 수 있다

import java.util.Scanner;

public class ConsoleInputExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("이름을 입력하세요: ");
        String name = scanner.nextLine();

        System.out.print("나이를 입력하세요: ");
        int age = scanner.nextInt();

        System.out.println("안녕하세요, " + name + "님! 당신의 나이는 " + age + "세 입니다.");

        scanner.close();
    }
}
  • 위 예제에서는 사용자가 이름과 나이를 입력하면, 프로그램이 인사와 함께 나이를 출력함.
  • next() 메서드를 통해 특정 변수에 입력받은 값을 저장함.

콘솔 입력 예제 (InputStreamReader와 BufferedReader)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class BufferedReaderConsoleInput {
    public static void main(String[] args) {
        // InputStreamReader는 바이트 기반 스트림을 문자 기반 스트림으로 변환해 줌
        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader(isr);

        try {
            System.out.print("이름을 입력하세요: ");
            String name = br.readLine();

            System.out.print("나이를 입력하세요: ");
            String age = br.readLine();
            int ageInt = Integer.parseInt(age); // 문자열을 정수로 변환

            System.out.println("안녕하세요, " + name + "님! 당신의 나이는 " + ageInt + "세 입니다.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
  • 위 예제에서 BufferedReader의 readLine() 메서드를 사용해 한 줄씩 입력받을 수 있으며, 입력된 데이터는 문자열로 반환함.

콘솔 출력 예제 (System.out)

콘솔 출력은 System.out.print 또는 System.out.println을 사용해 수행할 수 있습니다.

public class ConsoleOutputExample {
    public static void main(String[] args) {
        System.out.print("Hello, ");
        System.out.println("World!");
    }
}

위 코드는 System.out.print와 System.out.println을 사용해 "Hello, World!"를 출력함.


2. 파일 입출력

자바에서 파일 입출력은 File, FileWriter, FileReader 등 다양한 클래스를 활용한다.

파일 쓰기 예제 (FileWriter 사용)

import java.io.FileWriter;
import java.io.IOException;

public class FileWriteExample {
    public static void main(String[] args) {
        try (FileWriter writer = new FileWriter("example.txt")) {
            writer.write("Hello, World!\n");
            writer.write("파일에 데이터를 씁니다.");
            System.out.println("파일 쓰기가 완료되었습니다.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
  • 위 예제는 example.txt 파일에 "Hello, World!"와 "파일에 데이터를 씁니다."라는 문장을 작성함.
  • FileWriter를 사용해 문자열을 파일에 저장함.

파일 읽기 예제 (FileReader 사용)

파일에 저장된 데이터를 읽는 예제입니다.

import java.io.FileReader;
import java.io.IOException;

public class FileReadExample {
    public static void main(String[] args) {
        try (FileReader reader = new FileReader("example.txt")) {
            int data;
            while ((data = reader.read()) != -1) {
                System.out.print((char) data);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
  • 파일에 저장된 데이터를 읽는 코드임.
  • 이 코드는 example.txt 파일의 내용을 문자 하나씩 읽어 출력함.

객관식 문제

  1. Java에서 표준 출력에 사용되는 클래스는 무엇인가요?
    • A) Scanner
    • B) System
    • C) BufferedReader
    • D) InputStream
  2. System.out.println()에서 println의 역할은 무엇인가요?
    • A) 파일을 읽는다.
    • B) 화면에 내용을 출력한다.
    • C) 텍스트를 입력받는다.
    • D) 문자열을 객체로 변환한다.
  3. Java의 입출력 클래스 중 버퍼를 사용하여 효율적인 입출력을 제공하는 클래스는 무엇인가요?
    • A) File
    • B) BufferedReader
    • C) Scanner
    • D) System
  4. 파일에 텍스트를 쓰기 위해 가장 많이 사용되는 클래스는?
    • A) FileReader
    • B) FileWriter
    • C) BufferedReader
    • D) Scanner
  5. Java의 Scanner 클래스는 어떤 패키지에 속해 있나요?
    • A) java.io
    • B) java.util
    • C) java.nio
    • D) java.lang
  6. 다음 중 System.out.println()에서 out의 역할은 무엇인가요?
    • A) 입력을 받아오는 스트림
    • B) 표준 출력 스트림
    • C) 파일을 읽는 스트림
    • D) 네트워크 통신 스트림
  7. 파일에서 데이터를 읽어오는 대표적인 클래스는 무엇인가요?
    • A) FileReader
    • B) FileWriter
    • C) Scanner
    • D) PrintStream
  8. Java의 BufferedWriter 클래스는 어떤 기능을 제공하나요?
    • A) 파일을 삭제한다.
    • B) 파일을 읽는다.
    • C) 파일을 압축한다.
    • D) 텍스트를 버퍼에 쓰고 출력 성능을 향상시킨다.
  9. InputStream 클래스의 역할은 무엇인가요?
    • A) 파일을 생성한다.
    • B) 데이터를 입력받는다.
    • C) 데이터를 네트워크로 전송한다.
    • D) 데이터를 파일에 쓴다.
  10. FileReader와 FileWriter의 차이점은 무엇인가요?
    • A) FileReader는 데이터를 파일에 쓰고, FileWriter는 파일을 읽는다.
    • B) FileReader는 파일을 읽고, FileWriter는 데이터를 파일에 쓴다.
    • C) FileReader는 문자열만 처리하고, FileWriter는 숫자만 처리한다.
    • D) 두 클래스는 동일한 기능을 한다.

코테

1번 (백준 13241)

import java.util.Scanner;

public class Main {
    //최대 공약수 
    public static long gcd(long a, long b)
    {
        if(b==0)
        {
            return a;
        }
        else
        {
            return gcd(b,a%b);
        }
    }
    
    //최소 공배수 
    public static long lcm(long a, long b)
    {
        long gcd = gcd(a,b);
        return (a*b)/gcd;
    }
    
    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        
        long a = sc.nextLong();
        long b = sc.nextLong();
        
        System.out.println(lcm(a,b));
       

    }
}

 

2번 (백준 25305)

import java.util.*;

class Main{
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int n = sc.nextInt();
		int k = sc.nextInt();
		
		int[] arr = new int[n];
		for(int i = 0; i < n; i++)
			arr[i] = sc.nextInt();
		
		Arrays.sort(arr);
		System.out.println(arr[n - k]);
		sc.close();
	}
}
반응형