변수와 시스템 입출력

hovi·2023년 5월 30일
0

JAVA

목록 보기
5/36

자바 표준 입출력 클래스 (System)

사용자가 프로그램과 대화하기 위해서는 사용자와 프로그램 사이의 입출력을 담당하는 수단이 필요 합니다.

자바에서는 모든 것이 객체로 표현되므로, 입출력을 담당하는 수단 또한 모두 객체 입니다.

  • System.in
  • System.out
  • System.err : System.out과 유사하지만 버퍼를 사용하는 부분에서 차이가 있으며 리다이렉션이 되지 않습니다.

System.out.println(”출력 내용");

시스템의 출력 장치로 내용을 출력 한다는 의미

메소드의미
println(내용)내용 출력 후 줄 바꿈
print(내용)내용 출력
printf(”서식”, 출력값)출력 값을 서식에 맞춰서 출력 (C언어 서식과 동일)
  • 서식지정자 : %d, %ld, %u, %f, %.2f, %2d, %s, %c , %%

  • 이스케이프시퀀스 : \n, \r, \t, \b, \\

  • %6d : 6자의 정수 공간을 확보하고 오른쪽 정렬

  • %-10.2f : 10자리 공간을 확보하고 왼쪽 정렬

  • %6s : 문자열공간을 6자리 확보하고 오른쪽 정렬

package data_ex1;

// System.out
public class DataType {
    public static void main(String[] args) {
      String name = "Lee";
      String addr = "Seoul City";
      char gender = 'F';
      int age = 18;
      int kor = 99;
      int eng = 88;
      int mat = 40;
      double aver = 0.0;

	      // 자바 스타일 (print 오버로딩)
        System.out.println("====== Java Style output =======");
        System.out.println("Name : " + name);
        System.out.println("Address : " + addr);
        System.out.println("Gender : " + gender);
        System.out.println("Age : " + age);
        System.out.println("Total : " + (kor + eng + mat));
        System.out.println("Average : " + ((double)(kor + eng + mat) / 3));

        // C언어 스타일 (printf 서식지정자)
        System.out.println("====== C Style Output ======");
        System.out.printf("Name : %s\n", name);
        System.out.printf("Address : %s\n", addr);
        System.out.printf("Gender : %c\n", gender);
        System.out.printf("Age : %d\n", age);
        System.out.printf("Total : %d\n", (kor + eng + mat));
        System.out.printf("Average : %.2f\n", (double)(kor + eng + mat)/3);
    }
}

System 클래스 특징

자바 프로그램은 운영체제상에서 바로 실행되는 것이 아니라 JVM위에서 실행됩니다.

따라서 운영체제의 모든 기능을 자바 코드에서 직접 접근하기가 어렵습니다.

하지만, java.lang 패키지에 속하는 System 클래스를 이용하면 운영체제의 일부 기능을 이용할 수 있습니다.

즉 프로그램의 종료, 키보드 입력, 모니터 출력, 메모리 정리, 현재 시간 읽기, 시스템 환경 변수 읽기 등이 가능 합니다.

System 클래스의 모든 필드와 메소드는 정적 필드와 정적 메소드로 구성 됩니다.

기타 출력 예제

System.out.println("\"Enter\" 키를 입력 하셔면 종료 됩니다.");
System.out.println("Hello\\Java"); 
Ssytem.out.println("25%%");

키보드에서 입력된 내용을 변수에 저장하기

키보드에서 키 하나를 입력하면 프로그램에서는 숫자로 된 키보드를 읽을 수 있습니다.

throws *IOException 예외 처리 코드가 자동으로 추가 됩니다.*

  • 자바는 일출력에 대한 예외에 대해서 까다롭게 규정하고 있습니다. 그래서 입/출력 을 다루는 메서드에서 예외처리가 없다면 컴파일 에러가 발생하게 됩니다.

int keyCode = System.in.read();

public static void main(String[] args) throws IOException {
    int keyCode = System.in.read();
    System.out.println("KeyCode : " + keyCode);
}
public static void main(String[] args) throws IOException {
        while(true) {
            int keyCode = System.in.read();
            System.out.println("KeyCode : " + keyCode);
            if (keyCode == 'q') break;
        }
    }

ASCII 코드값 기준

Scanner 클래스

  1. 기본적인 데이터 타입들을 Scanner의 메소드를 사용하여 입력받을 수 있습니다.

예로 들어 100을 입력하고자 할 때, String(문자열)로 입력받고 싶으면 next() 나 nextLine() 을, int(정수)로 입력받고 싶다면 nextInt() 를 사용하여 입력받으면 알아서 해당 타입으로 입력된다.

  1. Scanner 을 사용할 시 util 패키지를 경로의 Scanner 클래스를 호출해야 합니다.

Scanner 클래스는 java.utiil 패키지내에 존재하므로 import해줘야 합니다.

import java.util.Scanner;

  1. 공백(띄어쓰기) 또는 개행(줄 바꿈)을 기준으로 읽는다.

객체 생성 방법

스캐너 클래스 사용을 위해서는 먼저 클래스를 호출하고, 객체를 생성 해야 합니다.

클래스이름 객체이름 = new 클래스이름();

Scanner in = new Scanner([System.in](http://system.in/)); // Scanner 객체 생성[Scanner 입력 메소드 종류]

Scanner 생성자에는 사용자로 부터 입력을 받디 위한 입력 스트림을 지정 합니다.

사용 방법

import java.util.Scanner;	// Scanner 클래스 호출
 
public class Main {
	public static void main(String[] args) {
 
		Scanner in = new Scanner(System.in);	// Scanner 객체 생성
 
		byte a = in.nextByte(); 		// byte 형 입력 및 리턴
		short b = in.nextShort(); 		// short 형 입력 및 리턴
		int c = in.nextInt(); 			// int 형 입력 및 리턴
		long d = in.nextLong(); 		// long 형 입력 및 리턴
		char ch = sc.next().charAt(0); // 문자 입력
 
		float e = in.nextFloat(); 		// float 형 입력 및 리턴
		double f = in.nextDouble(); 	// double 형 입력 및 리턴
 
		boolean g = in.nextBoolean(); 	// boolean 형 입력 및 리턴
 
		String h = in.next(); 			// String 형 입력 및 리턴 (공백을 기준으로 한 단어를 읽음)
		String i = in.nextLine(); 		// String 형 입력 및 리턴 (개행을 기준으로 한 줄을 읽음)
	} 
}

실습 예제

  • 스캐너 연속 입력 시 버퍼 비우기가 필요할 수 있습니다. : scan.nextLine();
package Sample1;
import java.lang.String;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("이름을 입력 하세요 : ");
        String name = sc.next();
        sc.nextLine();
        System.out.print("주소를 입력 하세요 : ");
        String addr = sc.nextLine();
        System.out.print("성별을 입력 하세요 : ");
        char gender = sc.next().charAt(0);
        System.out.print("나이를 입력 하세요 : ");
        int age = sc.nextInt();

        System.out.println("==== 회원 정보 출력 =====");
        System.out.println("이름 : " + name);
        System.out.println("주소 : " + addr);
        System.out.println("성별 : " + gender);
        System.out.println("나이 : " + age);
    }
}
profile
풀스택 예비 개발자

0개의 댓글

관련 채용 정보