[그린컴퓨터] 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 메서드를 활용해야 한다.