기본입력 예외관련, 제어문(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/