-
4. 자바의 입력program_language 및 궁금한것/Java 2019. 4. 11. 19:39
오늘의 날씨: 화창함
자바의 입력
- 프로그램 도중 필요한 시점에 외부에서 데이터를 전달받는 것.
- 변경되는 데이터를 소스프로그램 변경없이 외부에서 전달하기 위해 사용.
* 값이 변경되면 재컴파일 되어야 한다.
1. byte단위 입력 (키보드 입력) 1byte - 자바에서 데이터를 구성하는 기본단위
- 숫자 입력
int su= System.in.read( ) - 48; <-- 표준입력 즉 키보드 입력 // 읽어주는 기능의 메소드
-48을 해주는 이유는 나는 0을 입력하지만 프로그램에서는 48을 받기때문이다. 입력값과 출력값은 48차이가 난다.
(ASCII코드 값) <-- ANSI(미국표준협회)에서 제시한 표준 코드 체계
-엔터는 라인변경+앞으로 댕겨주는것(키보드모양이 글케 생김)
- 문자 입력
char ch= (char)System.in.read( ); <-- a,b,c,d 등 문자를 입력받는다.
- (char)을 입력하는이유: 문자입력시프로그램은 숫자로 값을 받는데, 그걸 아스키코드로 변환한것이다.
** 캐스팅 casting연산자: 형변환연산자!
int su = 300; double d = 3.14;
int su2 = 3.14; <-- 에러O double이 int보다 크기 때문에
su2 = (int) 3.14; <-- double데이터를 int데이터로 형변환하겠음! 소수점 아래 수는 버릴게(결과: 3)
double d2=300; <-- 에러X int<double (자동형변환, 이의 경우를 캐스팅이라 한다.
** exception은 정상에서 벗어난 예기치못한 예외상황이다. 특정메소드에서 나온다.
ex) 3층건물에서 친구가 배고파서 빨리 나가려고 창문을 뛰어내리려 한다 .
비정상적인 상황에서 나는 두가지를 선택할 수 있다.
1. throws: 사무실에 긴급상황을 알리고 나의 할일을 한다.
2. try ~catch: 긴급처치를 하고 119에 신고를 하고 적극적으로 해결을 한다.
* unreported exception에러 : 문법은 잘했으나 throws Exxeption이나 trycatch문으로 감싸야 한다.
2. 라인단위 입력
- 문자열과 10 이상의 숫자를 입력받아 처리할 수 있다.
- BufferedReader 안에 readLine(리턴값: 입력값)이 정의되어 있다.
* BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
String str= br.readLine();
BufferedReader에는 url과 file도 넣을 수 있다.
풀어서 본다면
System.in <-- 키보드 장치
InputStreamReader(System.in) <-- 키보드에서 입력받은것을 byte로 변환한다. ex) 가, ㄴ ㅏ ㄹ, 다
new BufferedReader(new InputStreamReader(System.in))
<-- byte로 변환한 것을 문자열로 저장한다. 엔터전까지 읽어들어서 단어들을 하나의 문자열로 만들어 전달한다.
<-- 10010101010100101010110 이런것을 가 나 다 라 이런식으로
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); <-- br에 위 기능을 넣는다.
** " " 따옴표는 코드안에서 문자를 식별하기 위해서만 쓰는 것이다.
** a(b(c())): 메소드 호출을 할 때 데이터자리에 메소드가 있다는 것은 호출을 해야 값을 받을수있다.
--> 화면은 총 세구간으로 나눠진다. 패키지, 클래스 메소드
- 문자열을 입력 받고싶다?
- in.readLine(); // a b c d 엔터
- 숫자입력(위에서 입력된 값에 대해 사칙연산을 하고싶다.)
Integer.parseInt(str)l // parseInt(); <-- 숫자로 구성된 문자열을 숫자로 변환하는 기능
Java Stream
byte가 흐르는 모양
<자바 I/O의 4대 클래스>
읽기 쓰기 byte단위 InputStream OutputStream 문자단위 Reader Writer * import <-- 사용하겠음, 사용하고자 하는 클래스의 소속(폴더, 패키지)을 알려주는 역할
형식) import 패키지명. 클래스명 ;
import java.lang.*; <-- 컴파일러가 자동으로 추가한다.
중요. C:\Program Files\Java\jre1.8.0_201\lib\rt파일을 압축파일로 열면 java- lang엔 String과 같이 자주 사용하는 클 래스들이 들어있다. java-io는 입출력 클래스가 들어있다!
* NumberFormatException 에러 <-- 숫자로 구성된 문자열만 들어가야 한다.
<-- Integer.parseInt(" 숫자가 아닌 문자 ")입력시 나오는 에러.
etc.
공백(WhiteSpace): 한개 이상의 스페이스(한 칸), 탭(일정간격), 엔터의 조합
Escape Sequence 확장문자 <-- 인용부호("",'') 내에서만 사용가능
\n: new line, Line Feed(LF), 줄바꿈
\r: Carriage Return(CR), 커서의 위치를 맨앞으로 이동 (\n과 \r은 혼합하여 사용하는 경우 많다.)
** Enter(엔터): \n\r
\t: Tab, 일정간격 띄우기
\\: '\' 문자표현
\": 큰따옴표
\': 작은 따옴표
<printf() 메소드>
JDK5버전 부터 지원!
f: format(형식)을 의미
formatString(포멧스트링): %s(문자열) %c(문자) %d(십진수) %f(실수)
Sytem.out.printf("출력포멧형식", 출력할 바인드 데이터);
System.out.printf("hello%-5java",345); // 5칸의 자리확보후 좌측 정렬
반응형'program_language 및 궁금한것 > Java' 카테고리의 다른 글
이클립스 사용 단축키 (0) 2019.04.15 5. 자바의 객체 지향이란? (OOP) (0) 2019.04.12 3. 연산자들, 조건문, 반복문 (0) 2019.04.09 2. 자바란? (JVM, 구성요소, 자료구조) (0) 2019.04.08 1. java(자바) 설치 방법 (0) 2019.04.08