JAVA

JAVA Scanner, BufferedReader

짱코딩러 2022. 7. 9. 16:16

Scanner

 :화면으로부터 데이터를 입력받는 기능을 제공하는 클래스

 

Scanner scan = new Scanner(System.in);

이런식으로 생성하면 되는데

System.in 이라는 건 사용자로부터 입력받기 위한 입력 스트림이다.

 

함께 사용하는 메소드는

nextInt()

nextDouble()

next()          ->입력 받은 문장을 공백이나 줄바꿈 까지만 읽어줌

nextLine()   ->입력 받은 문장전체를 공백 포함 읽어줌

 등이 있다.

 

scan.close();로 항상 닫아줘야한다.

import java.util.Scanner;
  // Scanner 메소드들은 콘솔에서 데이터를 입력한 후 Enter키를 누르면 동작

public class ScannerEx {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);  //in객체에 스캐너를 씌워서 직금 객체를 만드는거에연
		System.out.println("이름, 도시, 나이, 체중, 독신 여부를 빈칸으로 분리하여 입력하세요.");
		String name = scan.next();
		System.out.println("이름은 " + name);
		String city = scan.next();
		System.out.println("도시는 " + city);
		int age = scan.nextInt();  //정수입력
		System.out.println("나이는 " + age + "살");
		double weight = scan.nextDouble();  //실수입력
		System.out.println("체중은 " + weight + "kg");
		boolean isSingle = scan.nextBoolean();  //논리형입력
		System.out.println("독신여부는 " + isSingle + "입니다.");
		scan.close();  //썼으면 돌려주자.
	}

}

 

import java.util.Scanner;

public class ArithmeticOperator {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		System.out.println("정수를 입력하세요: ");
		int time = scanner.nextInt();
		int second = time % 60;
		int minute = (time / 60) % 60;
		int hour = (time / 60) / 60;
		
		System.out.println(time + "초는 ");
		System.out.println(hour + "시간, ");
		System.out.println(minute + "분, ");
		System.out.println(second + "초입니다.");
		
		scanner.close();
	}

}

 

Scanner를 새로 사용하려면

nextLine() 메서드를 사용하여 현재 행을 스캔 한 다음

Scanner를 수행 할 다음 행으로 설정합니다.

--

nextLine()을 사용하면 공백과, 개행문자를 포함하기 때문에 개행문자만 가져오고 프로그램이 종료된다.

방법1. Scanner.nextLine() 추가

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

		System.out.println("구입 금액을 입력해주세요.");
		money = scanner.nextInt();
		scanner.nextLine();   // 개행문자 제거

		System.out.println("당첨 로또 번호를 입력해주세요.");
		winningLottoNumber = scanner.nextLine();
	}
}

방법2. Scanner.nextLine()으로 입력받고 Integer.parseInt()로 변환

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

		System.out.println("구입 금액을 입력해주세요.");
		money = Integer.parseInt(scanner.nextLine());

		System.out.println("당첨 로또 번호를 입력해주세요.");
		winningLottoNumber = scanner.nextLine();
	}
}

 

+22/11/11

BufferedReader

 : Scanner와 같은 기능을 하지만 버퍼를 이용해 속도가 더 빠름.

(엔터만 경계로 인식하고, 반은 데이터가 String으로 고정됨)

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

br.readLine();	//콘솔에서 값을 입력받음(한 줄)
int i = Integer.parseInt(br.readLine());	//String 아니면 형변환 해줘야됨

bw.write("콘솔에 값이 출력됨.");
bw.write(i);
bw.close();	//닫아줌

write 할때는 항상 flush() 써줘야 출력됨. 혹은 bw.close()

키보드의 입력값을 버퍼에 한번에 모았다가 , 버퍼의 내용을 한번에 전송하기 때문에 한번에 모았다가 출력이 가능하다.