기본입력 예외관련, 제어문(if문, while문)
기본입력
System.in.read() – 단일 문자 입력
입력 Buffer로부터 Data를 ASCII 코드 만큼 입력 받음
int 형으로 입력 받으므로 적절한 형 변환이 필요함
BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); - 문자열 입력
버퍼에서 Enter 키 까지의 문자열을 입력 받음
String 형으로 입력 받음
CPU
운영체제 : 작업에 대한 최적화된 스케쥴링을 제공
우선순위에 인해서 CPU의 작업순서가 달라질 수도 있음 (스케쥴링 재조정)
I/O인터럽트 시그널 : 운영체제가 CPU에게 입력신호가 들어와서 지금 스케쥴링 재조정을 해야하니 지금 하고 있던 작업을 일시정지하라고 보내는 신호
모든 입력의 상황에 대해서 CPU가 즉각반응하기 위해 멈추는건 비효율적임
=>그래서 , 입력이 들어가면 메모리영역(Buffer)라는 곳에 누적을 시킴 ex)입력을 Buffer에 모아놨다가, Enter를 누르면 한번 인터럽트를 걸고 Buffer에 모아둔 입력내용을 송신함 BufferdReader
엔터도 입력임 : 엔터를 치면 \r\n 이 버퍼로 들어감.
8번라인에서 입력을 받았던 상태에서
다시 입력을 받으려고 System.in.read();를 실행하면
이전에 입력을 받은 적이 있었기 때문에(버퍼에 값이 있기 때문에) 추가로 입력을 받지 않고 버퍼에 있는 값(엔터 \r\n) 에서 \r (아스키코드 13)이 출력된다
.아래에 또 입력을 받을경우 그 다음에 입력한 것을 출력되는것은 버퍼에 남아있는 \n (아스키코드 10)이다.
**코드에는 보이지 않는 내부동작이 있다. 코딩은 그것을 고려하여 해야한다.(상상하는 연습)
문자열이나 숫자열을 입력받기 위해 사용하는 코드
Scanner sc = new Scanner(System.in);
sc.nextLine();
Scanner라는 도구는 import java.lang.*;에 포함되어 있지 않은 도구임
코드에 import java.util.*; 를 작성해주어야함.
이클립스 단축키 ctrl+shift+o : 해당 도구에 대한 라이브러리를 자동으로 import 해줌
// 숫자로 번역하라는 명령어
int -> Integer.parseInt(대상);
long -> Long.parselong(대상);
float -> Float.parsefloat(대상);
double -> Double.parseDouble(대상);
제어문이란?
순차적인 흐름을 조건에 따라 통제(제어)하는 명령
사용자의 요구에 따라 프로그램이 동작
*제어문의 종류
조건
if - else
반복
while, do while, for
선택
switch - case
흐름 변경
continue, break
**알고리즘공부 필요
if( 조건문 )
{
실행문1;
}else if( 조건문 ){
실행문2;
}
else{
실행문3;
}
조건문 : 연산결과가 참 또는 거짓이 나오는 것,
조건문에는 반드시 boolean값만 들어감.
조건문 a==10
a=5 ----> 조건문 false 가 됨
a=10 ----> 조건문 true 가 됨
조건문 결과가 true가 나오면 실행문1을 실행함
조건문 결과가 false가 나오면 중괄호 안 실행문1을 실행하지 않고 지나감.
else if 는 if에 종속적인 문법 (단독으로 사용안됨)
else는 소괄호가 들어가면 안되는 문법
이클립스 단축키 : ctrl+A 를 한 후 Ctrl+I(indente)를 누르면 자동으로 들여쓰기가 됨
while문
while문
사용자가 원하는 만큼 명령들을 여러 번 실행하는 제어구조.
특정 조건이 만족되는 동안 명령을 계속적으로 실행한다.
식이 참일 경우에만 루프 처리를 반복한다.
while( 조건문 ) { 실행문1; } |
![]() |
<변수를 만들 때 초기화하는 이유>
초기값을 넣지 않으면
Stack에서 변수가 있는 위치에 예전에 윈도우가 사용했던 쓰레기값이 들어있다. → 논리오류 발생
초기값은 0을 넣을 수도 있고, 개발자가 필요한 값을 넣을 수도 있다.
초기값, 조건문, 증감문을 잘 넣어야 반복문이 잘 돌아간다.
알고리즘 공부 사이트 : https://programmers.co.kr/skill_checks
https://www.42.us.org/program/