[Java]변수와 시스템 입출력

Devlog·2024년 2월 14일

Java

목록 보기
4/41

표준 입력
System.in.read();
-System.in: 시스템의 표준 입력장치

표준 출력
System.out.println();
-System.out: 시스템의 표준 출력 장치
-System.:시스템이 가지고 있는
-out.:출력 장치로
-println():괄호 안의 내용을 출력하고 행을 바꿔라, ln은 line의 줄임말

out의 종류
println(내용);
-괄호 안의 내용을 출력하고 행을 바꿔라
print(내용);
-괄호 안의 내용을 출력만 해라
printf("형식문자열", 값1, 값2, ···);
-괄호 안의 첫 번째 문자열 형식대로 내용을 출력
-d(정수), f(실수), s(문자열)
ex)
System.out.printf("이름: %s", "감자바");
System.out.printf("나이: %d", 25);

형식 문자열에 포함될 값이 2개 이상일 경우 값의 순번을 알려줘야함
System.out.printf("이름: %1s,나이:s, 나이: %2d", "김자바", 25);

public class PrintfExample {

	public static void main(String[] args) {
		/*
		 자주 사용되는 형식 문자열
		 [정수]
		 %d(정수)								→ 출력 123
		 %6d(6자리 정수. 왼쪽 빈 자리 공백) 	→ 출력 ___123
		 %-6d(6자리 정수. 오른쪽 빈 자리 공백)	→ 출력 123___
		 %06d(6자리 정수. 왼쪽 빈 자리 0 채움)	→ 출력 000123
		 
		 [실수]
		 %10.2f(소수점 이상 7자리. 소수점 이하 2자리. 왼쪽 빈 자리 공백)	→ 출력 ____123.45
		 %-10.2f(소수점 이상 7자리. 소수점 이하 2자리. 오른쪽 빈 자리 공백)	→ 출력 123.45____
		 %010.2f(소수점 이상 7자리. 소수점 이하 2자리. 왼쪽 빈 자리 0 채움)	→ 출력 0000123.45
		 
		 [문자열]
		 %s(문자열)									→ 출력 abc
		 %6s(6자리 문자열. 왼쪽 빈 자리 공백)		→ 출력 ___abc
		 %-6s(6자리 문자열. 오른쪽 빈 자리 공백)	→ 출력 abc___
		 
		 [특수문자]
		 \t(탭(tab))
		 \n(줄바꿈)
		 %%(%) → 출력 %
		*/
		int value = 123;
		
		System.out.printf("상품의 가격:%d원\n", value);
		System.out.printf("상품의 가격:%6d원\n", value);
		System.out.printf("상품의 가격:%-6d원\n", value);
		System.out.printf("상품의 가격:%06d원\n", value);
		
		double area = 3.14159 * 10 * 10;
		System.out.printf("반지름이 %d인 원의 넓이:%10.2f\n", 10, area);
		
		String name = "홍길동";
		String job = "도적";
		System.out.printf("%6d | %-10s | %10s\n", 1, name, job);
	}

}

-출력-
상품의 가격:123원
상품의 가격: 123원
상품의 가격:123 원
상품의 가격:000123원
반지름이 10인 원의 넓이: 314.16
1 | 홍길동 | 도적


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

int keyCode = System. + in. +read();
System. : 시스템이 가지고 있는
in. : 입력 장치에서
read() : 입력된 키코드를 읽어라

main()메소드 끝에 throws Exception이 붙어 있는데
이것은 System.in.read()에 대한 예외 처리 코드임

public class KeyCodeExample {

	public static void main(String[] args) throws Exception{
		/*
		 System.in.read()가 실행되면 Console 뷰는 Enter 키가 입력될 때까지 대기 상태가 됨
		 Enter키가 입력되며 System.in.read()는 입력된 키들에 대한 키코드를 하나씩 읽음
		 */
		int keyCode;
		
		// A가 입력되면
		keyCode = System.in.read();
		System.out.println("keyCode: " + keyCode); //A키에 대한 키코드 97를 먼저 읽음
		
		keyCode = System.in.read();
		System.out.println("keyCode: " + keyCode); //캐리지 리턴(CR: 13)
		
		keyCode = System.in.read();
		System.out.println("keyCode: " + keyCode); //라인 피드(LF: 10)
		
		
	}

}

System.in.read() 단점
: 키코드를 하나씩 읽기 때문에 2개 이상의 키가 조합된 한글을 읽을 수 없음
: 키보드로부터 입력된 내용을 통 문자열로 읽지 못합

단점을 보완하기 위해 Scanner 클래스를 이용

Scanner scanner = new Scanner(System.in); → 생성된 Scanner를 scanner변수에 저장
Scanner scanner: Scanner변수 선언
new Scanner(System.in); : 시스템의 입력 장치로부터 읽는 Scanner를생성

생성된 Scanner는 scanner변수에 저장했다가 언제든지 키보드에서 읽고 싶을 때
scanner.nextLine()메소드를 실행하면 됨
scanner.nextLine()메소드는 Enter키가 입력되기 전까지 대기 상태,
Enter키가 입력되면 입력된 모든 내용을 문자열로 읽음

//import문
//Scanner가 java.util패키지에 있다는 것을 컴파일러에게 알려주는 역할
import java.util.Scanner;

public class ScannerExample {

	public static void main(String[] args) throws Exception {
		
		Scanner scanner = new Scanner(System.in);
		String inputData;
		
		while(true) {
			inputData = scanner.nextLine();
			System.out.println("입력된 문자열: \"" + inputData + "\"");
			
			//기본타입(byte, short, int, long, float, double, boolean)의 값이 동일한지 비교할때에는 ==를 사용
			//문자열(String)이 동일한지 비교할 때에는 equals()메소드를 사용
			if(inputData.equals("q")) {
				break;
			}
		}
		
		System.out.println("종료");

	}

}

-출력-
a
입력된 문자열: "a"

입력된 문자열: ""
abc
입력된 문자열: "abc"
q
입력된 문자열: "q"
종료

0개의 댓글