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()
키보드의 입력값을 버퍼에 한번에 모았다가 , 버퍼의 내용을 한번에 전송하기 때문에 한번에 모았다가 출력이 가능하다.