새소식

JAVA

자바 기초 : 변수와 시스템 입출력

  • -

핵심개념

  • 시스템 입출력 : 프로그래밍 언어에는 시스템 표준 출력 장치(모니터)와 표준 입력 장치(키보드)가 있다.
  • 출력장치(모니터)로 출력하기
    System.out.println("출력내용") -> 괄호 안의 리터럴 또는 변수를 모니터로 출력하고 행을 바꾼다.
    System.out.print("출력내용") -> 괄호 안의 리터럴 또는 변수를 모니터로 출력한다.
    System.out.printf(""형식문자열, 값1, 값2,....") -> 괄호 안의 첫번째 문자열 형식대로 내용을 출력한다.
       -> 형식문자열에서 %(문자열의 시작)와 변환문자는 필수로 작성해야한다. 또한 형식문자열에 포함된 값이 2개 이상이라면 값의 순번을 알려주어야 하는데 첫번째값은 1$, 두번째값은 2$ ...와 같이 표시해야한다.
문자열 출력 방식 출력 형태
정수 %d
%6d
%-6d
%06d
정수를 출력
6자리 정수를 출력하고 왼쪽에 공백을 채움
6자리 정수를 출력하고 오른쪽에 공백을 채움
6자리 정수를 출력하고 왼쪽 빈자리에 0을 채움
1
_ _ _ _ _1
1_ _ _ _ _
000001
실수 %10.2f
%-10.2f
%010.2f
실수 영역 전체 10자리 확보, 소수점 이하 2자리, 왼쪽 빈자리공백
실수 영역 전체 10자리 확보, 소수점 이하 2자리, 오른쪽 빈자리 공백
실수 영역 전체 10자리 확보, 소수점 이하 2자리, 왼쪽 빈자리에 0을 채움
_ _ _ _ _123.45
123.45_ _ _ _ _
0000123.45
문자열 %s
%6s
%-6s
문자열 출력
6자리 문자열 출력, 왼쪽에 공백을 채움
6자리 문자열 출력, 오른쪽에 공백을 채움
aa
_ _ _ _aa
aa_ _ _ _ 
특수문자 \t
\n
%%
탭(Tab)
줄바꿈
%


%
public static void main(String[] args) {
   int value = 123;
// %d : 정수 value를 출력
   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.14195*10*10;
   System.out.printf("반지름이 %d인 원의 넓이:%10.2f\n", 10, area);

   String name = "김땡땡";
   String job = "개발자";
   System.out.printf("%1$6d|%2$-10s|%3$10s|%2$s은 멋진 %3$s",1,name,job);

}
실행결과 :
상품의 가격:123원
상품의 가격: 123원
상품의 가격:123 원
상품의 가격:000123원
반지름이 10인 원의 넓이: 314.20
     1 |김땡땡       |       개발자|김땡땡은 멋진 개발자

 

  • 표준 입력 장치(키보드)에서 입력된 내용을 변수에 저장하기
    System.In.read() -> 키보드에 입력된 키코드를 읽는다. 어떠한 값을 입력하고 엔터키를 쳐야 시스템에서 읽는다.
    System.In.read()가 실행되면 콘솔창이 대기상태가 되고, 엔터키가 입력되면 System.In.read()가 입력된 키들의 키코드와 엔터키에 대한 키코드를 읽는다.
    ex) A = 65, a = 97
public static void main(String[] args)throws Exception {
//예외처리 : 모니터에 예외내용을 출력

   int keyCode;

   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) 읽음
}
실행결과 :
a
keyCode: 97
keyCode: 13
keyCode: 10

 

  • 입력된 키의 개수와 상관없이 키보드 읽기 : while문을 이용하여 무한반복을 실행하고, 반복을 종료하려면 콘솔창의 빨간색 버튼을 클릭하여 강제로 종료하거나 if문을 사용하여 중지되는 조건을 만들어야함.
public static void main(String[] args)throws Exception {

   int keyCode;
   while(true) {
   keyCode = System.in.read();

   System.out.println("keyCode : " + keyCode);
//true일 동안 {} 안의 내용을 무한히 반복
/*System.in.read()로 읽었기 때문에 int타입 키코드를 얻음.
자바는 기본타입의 값이 동일한지 비교할 떄는 ==을 사용 */

   if(keyCode == 113) {
   break;
//keyCode가 113이 되면 while문 종료
   }
 }
  System.out.println("종료");
}
실행결과 : 
q
keyCode : 113
종료

 

  • Scanner : 자바에 포함된 "java.util"패키지에 있는 표준 입출력 클래스.
package ch02.sec04;

import java.util.Scanner;  //Scanner가 자바에 있다는 것을 컴파일러에게 알려주는 역할. 생략 시 컴파일 에러

public static void main(String[] args) throws Exception {
   try (Scanner scanner = new Scanner(System.in)) {
//스캐너 객체 생성 = 시스템의 입력장치로부터 읽는 Scanner객체 생성
   String inputData;
//문자열 변수 선언

   while(true) {
   inputData = scanner.nextLine();
//inputData라는 변수를 설정하고, 이 변수에 scanner의 메소드 중 문자열을 입력받는 nextLine()을 사용
/*scanner.nextLine()으로 읽었기 때문에 String타입의 문자열을 얻음.
자바는 문자열이 동일한지 비교할깨는 equals()메소드를 사용*/

   System.out.println("입력된 문자열 : \"" + inputData + "\"");

   if(inputData.equals("q")) {
     break;
    }
   }
  System.out.println("종료");
  }
 }
}
실행결과 : 
a
입력된 문자열 : "a"
q
입력된 문자열 : "q"
종료

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.