TIL. 표준입력, 제어문(조건 , 반복)

hyuko·2023년 1월 3일
1

Java

목록 보기
14/26

표준 입력

  • Scanner Class

선언 방식

Scanner scanner = new Scanner(System.in);
  • Scanner의 대표적인 메서드()
    • scanner.next() : String 타입
    • scanner.nextLine() : String 타입
    • scanner.nextInt() : 정수형 타입
    • scanner.nextDouble() : 실수형 타입

※ Scanner를 쓰기 위해서는 import를 해주어야 한다.
java.lang 이라는 라이브러리에 있는 것은 따로 import가 필요하지 않지만,
Scanner의 경우 java.util에 있는 클래스기에 import를 따로 해주어야 한다.


import를 하는 방법으로는 이클립스 기준 Scanner를 치고 ctrl + spacebar
해주거나 일괄적으로 한번에 import를 하려면 ctrl + shift + o 를 해주면 된다.
하지만 이 방법을 사용할 때에는 사용하려는 클래스를 쓰겠다고 명확하게 명시해주어야
import가 된다.


next()와 nextLine()의 차이

Scanner의 대표적인 메서드 중 next()와 nextLine()이 있다.
이 두개의 메서드는 모두 String 타입을 쓰는데, 이 두가지의 차이점은
next()의 경우에는 spacebar를 포함하지 않아 spacebar를 쓰게 되면
인식을 하지 않고 바로 출력된다.

nextLine()은 spacebar를 포함하여 자유롭게 쓸 수 있다.
enter키로 줄의 끝을 명시해준다.

  • next()의 띄워쓰기 오류

버퍼란?
버퍼는 어떠한 공간을 만들어서 축적을 해놓고 단위 별로 나누어서 송출하거나 출력해주는
기능이다. 이 기능을 쓰는 이유는 실시간 스트리밍등에서 인터넷이 끊기거나 느려져도 버퍼를
통해 미리 일정정도의 내용들을 다운해서 버퍼에 저장해 놓고 스트리밍 하기에 깔끔하게 가능하다.


Scanner에는 기본적으로 버퍼가 내장되어 있다.
버퍼를 쓰지 않는다면 글자 하나당 입력이 들어가기 때문에 ㄱ, ㄴ, ㅣ, ㄷ 등 하나씩
타자를 칠 때마다 출력이 되지만 , 버퍼를 씀으로 버퍼라는 공간에 키보드의 입력이
모두 저장되고 enter를 입력시에 한번에 출력이 되게 한다.

이때 next()는 스페이스바를 버퍼의 중간지점으로 끊겠다는 토큰 역활을 하게되고,
스페이스바를 치기 바로 직전의 문자들만 출력이 된다.
하지만 enter를 치기 전까지의 문자는 스페이스바 이후에도 버퍼에 저장이 되고,
next()가 다음에 한번 더 오게 된다면 그때 그 이후 부분이 출력이 된다.

하지만 nextLine()이 올 경우 남아있던 enter가 입력이 되기 때문에
아무것도 출력이 되지않고 넘어가게된다.
그렇기 때문에 next()와 nextLine()을 혼용해서 사용할 경우에는
중간에 nextLine()을 주어서 남아있는 버퍼를 비워 주어야 원하는 값을 얻을 수 있다.

  • 스캐너 실습 예제 코드
Scanner sc = new Scanner(System.in);
		
String name = null;
int age = 0;
String address = null;
String phoneNumber = null;
		
System.out.print("이름: ");
name = sc.next();
		
System.out.print("나이: ");
age = sc.nextInt();
		
sc.nextLine();
		
System.out.print("주소: ");
address = sc.nextLine();
		
System.out.print("연락처: ");
phoneNumber = sc.next();
		
System.out.println("사용자의 이름은 " + name + "이고 나이는 " + age + "살입니다.\n주소는 " 
+ address + "에 거주중입니다.\n연락처는 " + phoneNumber + " 입니다.");
  • 코드의 실행결과 콘솔화면


제어문

조건문

If , else, else if

  • if : 만약 ~ 라면 (조건은 if에만 달린다.) 조건절 뒤에는 명령절이 오게 된다.
  • else : if 의 조건이 아니면~

특징 : else 와 if는 하나의 명령만 실행할 수 있고 여러가지의 명령을 주기 위해서는
범위를 지정해 주어야 한다. {}를 통해서 범위를 지정해주면 여러가지의 명령을 줄 수 있다.
그리고 if나 else 뒤에 또 다른 if else가 올 수 있으며 else만 단독으로 사용은 불가하다.

  • 실습 예제코드
Scanner sc = new Scanner(System.in);

int score = 0;
String grade = null;
		
System.out.print("점수 입력: ");
score = sc.nextInt();

if(score < 0 || score > 100) {
	grade = null;
}else if (score > 89) {
	grade = "A";
}else if (score > 79) {
	grade = "B";
}else if (score > 69) {
	grade = "C";
}else if (score > 59) {
	grade = "D";
}else {
	grade = "F";
}

if((score > 59 && score < 101) && (score % 10 > 4 || score == 100)) {
	grade += "+";
}

if(grade == null) {
	System.out.println("계산 불가");
}else {
	System.out.println("점수(" + score + "): " + grade + "학점");
}
  • 실습 코드 결과 콘솔화면

switch / case 문

  • switch ~ case : 해당 조건에 맞는 case를 찾는 문법이다.

  • default : if문의 else와 같은 문법

  • 실습예제 코드

String select = "C선택";
		
switch (select) {
	case "A선택" :
		System.out.println("PC(A)를 연결합니다.");
		break;
	case "B선택" :
		System.out.println("PC(B)를 연결합니다.");
		break;
	case "C선택" :
		System.out.println("PC(C)를 연결합니다.");
		break;
	case "D선택" :
		System.out.println("PC(D)를 연결합니다.");	
		break;
	default :
		System.out.println("else와 같은 역할");
}
  • 실습 코드 예제 콘솔 화면

반복문

FOR문

  • for문의 선언방식 :
for (int i = 0; i < 100; i++) {
	실행문;
    }

for문은 () 안에 각각 int i = 0; 초기화식, i < 100; 조건식, i++ 증감식의
형태로 나타낸다.

여기서 int i = 0; 으로 왠만하면 고정해서 쓰도록 한다. 그 이유에는 컴퓨터는
항상 index는 0부터 시작이기 때문이다. 조건식만 바꾸어서 몇번 반복을 할 지 결정해서
쓰도록 노력한다.

for문이 돌아가는 방식은 처음 초기화를 한 후에 조건식에 맞다면 실행문으로 넘어가
실행을 완료 후에 i++ 증감을 시켜주고 다시 초기화로 가는 것이 아니라 조건식으로
넘어가 조건을 충족한다면 실행문으로 간다, 이런 방식으로 조건에 해당하지 않을 때까지
반복후에 종료한다.

  • 별찍기 예제
	for(int i = 0; i < 10; i++) {
		for(int j = 0; j < i + 1; j++) {
			System.out.print("*");
		}
		System.out.println();
	}
		
	for(int i = 0; i < 10; i++) {
		for(int j = 0; j < 10 - i; j++) {
			System.out.print("*");
		}
		System.out.println();
	}
  • 예제코드 실행 콘솔화면

While 문

  • while문의 선언:

int i = 0;
while(조건식) {
	실행문;
    증감식;
}

while은 for문과 다르게 초기화식이 따로 나와있고, 증감을 실행이후 시켜주어야 한다.

  • while문 실습 별찍기
int i = 0;
		
while (i < 10) {
	int j = 0;
			
	while (j < i + 1) {
		System.out.print("*");
		j++;
	}
	System.out.println();
			
	i++;
}
  • 코드 실행 화면 콘솔


for문과 while문을 구분해서 이용하는 이유는
for문 같은 경우 확실한 index 순서를 이용해서 구간 반복을 할 때 이용하고
while문은 구간 반복보다는 조건이 중요시 되는 반복일 때 쓰인다.

반복문 안의 continue

  • continue :
    for문이나 while문등 반복문 안에 쓰게 된다.
    ~ 이면 ~ 이 아니면 다음 반복을 진행해라! 라는 의미 보통 for문 안에
    조건을 주고 쓰거나 조건 안에 쓰인다.

  • 예시코드

for(int i = 0; i < 10; i++) {
			
	if(i % 2 != 0) {
		continue;
	}
	System.out.println("i: " + i);
}
  • 예시코드 출력 콘솔화면

  • 똑같은 예제를 while문으로 변환
int i = 0;
while(i < 10) {			
			
	f(i % 2 != 0) {
		i++;
		continue;
	}
	System.out.println("i: " + i);
	i++;
}
  • 코드 출력

profile
백엔드 개발자 준비중

0개의 댓글