기본 정보
- IO : Input / Output (입출력)
- Stream : Java에서 데이터를 주고 받기 위한 통로
: 모든 IO 에서는 Stream을 통해서 한다
: 표준 입출력을 제외한 모든 IO에서는 Stream 을 직접 만들어야 한다
표준 입출력 -1
- System.in : 표준 입력 스트림 (= 객체)
: 버퍼(inputStream)을 사용하기 때문에 main 메소드에 IOException을 필수로 throw 해야함
public class Test01 {
public static void main(String[] args) throws IOException {
System.out.print("정수 입력 : ");
int su = 0;
while(true) {
int a = System.in.read();
su *= 10;
su += (a - 48);
System.out.println(a);
}
}
}
- 위 예시에서도 보는 보는 것 처럼 'System.in' 을 쓰기 위해선 부수적인 것들이 많이 필요하기 때문에 잘 사용되지 않음.
- 이를 편리하게 사용하기 위해 'Scanner' 를 이용
public class Test01 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
// 데이터 입력받는 법 1.
System.out.print("나이 입력 : ");
int age = sc.nextInt();
// 데이터 입력받는 법 2.
sc.nextLine();
System.out.print("이름 입력 : ");
String name = sc.nextLine();
System.out.println("나이 : " + age + "살");
System.out.println("이름 : " + name);
}
}
표준 입출력 -2
- System.out : 표준 출력 스트림 (= 객체)
// 제어문자
// \n (Line Feed , New Line)
// - 커서를 다음줄로 이동시키는 제어문자
System.out.println("a\nb");
// \t (Horizontal Tab)
// - 커서를 TAB 크기 만큼 이동시키는 제어문자
System.out.println("이름\t : 김동은"); // \t 사용
System.out.println("전화번호\t : 010-1234-5678"); // \t 사용
System.out.println("이름 : 김동은"); // \t 미사용
System.out.println("전화번호 : 010-1234-5678"); // \t 미사용
- 제어문자는 예시 외에도 다양한 기능들이 많으니 찾아보면 됨
문제
* 답은 하단 스크롤
앞의 예제를 참고하시어 사용자에게 입력을 받아 다음을 계산하시오
(결과 화면)
자바 시험 점수 입력하세요
95
파이썬 시험 점수 입력하세요
80
이름을 입력하세요
홍길동
============================
홍길동님의 성적 합계 = 175점, 평균 = 87.5
정답
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("자바 점수 입력 : ");
int java = sc.nextInt();
System.out.print("파이썬 점수 입력 : ");
int python = sc.nextInt();
sc.nextLine(); // 버퍼에 들어온 데이터를 출력하기 위해
System.out.print("이름 입력 : ");
String name = sc.nextLine();
System.out.println("=== 출력 방법 1 ===");
System.out.println(name + "님의 성적 합계 = " + (java + python) + "점, 평균 = " + (double)(java + python)/2 + "점");
System.out.println("=== 출력 방법 2 ===");
// 성적 합계와 평균의 변수를 정의 후, 해당 변수만 출력할 수도 있음
// - 해당 변수(java, python)는 위에서 먼저 정의를 한 후, 하단부에서 사용해야 한다
int sum = java + python;
double ave = sum/2.0;
System.out.println(name + "님의 성적 합계 = " + sum + "점, 평균 = " + ave + "점");
// Stream이 사용되면, 종료를 시켜줘야 함, 메모리 사용 효율을 위해서. (필수는 아님)
sc.close();
}
* sc.nextLine() 을 사용하는 이유를 구글링 해본 결과, 버퍼에 들어온 데이터를 출력할 때 사용하는 용도라고 봤는데 정확하진 않아서 다시 찾아볼 예정이다
'IT 언어 > Java' 카테고리의 다른 글
[Java] 반복문 문제 --*Q/A (0) | 2023.12.01 |
---|---|
[Java] 랜덤 Math.radom() --*Q/A (2) | 2023.11.27 |
[Java] 제어문 (조건문, 선택문, 반복문) --*Q/A (0) | 2023.11.27 |
[Java] 정수와 실수 (2) | 2023.11.23 |
[Java] 자료형과 변수 (0) | 2023.11.23 |