[그린컴퓨터] Server/JAVA(자바 JDK)
자바 입출력과 스트림 { Scanner 클래스, 입력스트림과 출력스트림, 바이트&문자 스트림, 기반&보조 스트림 }
Ben의 프로그램
2023. 7. 4. 13:38
728x90






package main;
import java.io.IOException;
public class Ex1 {
public static void main(String[] args) {
System.out.println("알파벳 하나를 쓰고 Enter 누르세요.");
int i;
try {
i = System.in.read();
System.out.println(i);
System.out.println((char) i);
} catch (IOException e) {
System.out.println(e);
}
}
}

- system.out 은 출력장치이고 system.in 은 입력장치이다.
- 입출력 시 발생할 수 있는 예외처리를 IOException 으로 처리해주고 값을 입력받고 입력받은 값으로 다양한 처리를 해줄 수 있다.

- system.in.read( ) 메소드의 단점은 문자열을 읽을 수 없다는 점이다.
- Scanner 클래스를 이용하면 문자열뿐만 아니라 다양한 자료형을 입력받을 수 있다.
- Scanner 클래스는 시스템을 인자로 받아서 데이터를 입력받을 수 있다.

package main;
import java.util.Scanner;
public class Ex2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("이름 : ");
String name = scanner.nextLine();
System.out.println("직업 : ");
String job = scanner.nextLine();
System.out.println("사번 : ");
int num = scanner.nextInt();
System.out.println(name);
System.out.println(job);
System.out.println(num);
scanner.close();
}
}

- Scanner 클래스를 활용하면 다양한 자료형을 입력받을 수 있다. 아주 편리한 클래스이다.
연습문제
대소문자 상관없이 stop 이 입력되면 프로그램이 종료되도록 하시오.
package quiz;
import java.util.Scanner;
public class Quiz1 {
public static void main(String[] args) {
while (true) {
System.out.println("종료합니까? (stop입력)");
Scanner scanner = new Scanner(System.in);
String isEnd = scanner.nextLine();
if (isEnd.equalsIgnoreCase("STOP")) {
System.out.println("program is over");
break;
}
}
}
}


- equalsIgnoreCase 를 사용해야 우리가 생각하는 대로 작동하는 것을 볼 수 있다. == 를 사용하면 논리적 동일성이 아니라 물리적 동일성을 판단하기 때문에 객체인 isEnd 와 "STOP" 은 물리적으로 다른 값을 갖고 있기 때문에 False 로 출력되게 된다. String 에 대해서 논리적 동일성을 판단하기 위해서는 equals 메서드를 활용해야 한다.