4 분 소요

조건문

  • 조건문은 조건식과 실행될 하나의 문장 또는 블럭{}으로 구성됩니다.
  • Java에서 조건문은 if문switch문 두 가지 뿐입니다.
  • if문이 주로 사용되며, 경우의 수가 많은 경우 switch문을 사용할 것을 고려합니다.
  • 모든 switch문은 if문으로 변경이 가능하지만, if문은 switch문으로 변경할 수 없는 경우가 많습니다.

if(조건식) {문장들}

image-20240124091939563

if문

  • if문은 if, if-else, if-else if의 세가지 형태가 있다
  • 조건식의 결과는 반드시 true 또는 false 이어야 한다.

image-20240124092053396

public class IfTest {
	public static void main(String[] args) {
		int kor = 89;
		int eng = 90;
		int math = 95;
//		int kor = 89, eng = 90, math = 95; 위에서 변수를 선언해주는 방법과 동일합니다. 
		
		int tot = kor + eng + math; 
        //=에 오른쪽에 변수가 있으면 선언된 변수를 가져오겠다는 뜻입니다. 왼쪽에 있다면 오른쪽에 정의된 값을 왼쪽의 변수에 넣겠다는 뜻입니다.
//		double avg1 = tot/3.0;
//		float avg2 = tot/3;
		double avg = (double)tot/3;
		char grade;
		
		avg = Math.round(avg*100)/100d;
		
		if(avg>=90) {
			grade = 'A';
		} else if(avg>=80) {
			grade = 'B';
		} else if(avg>=70) {
			grade = 'C';
		} else if(avg>=60) {
			grade = 'D';
		} else {
			grade = 'F';
		}
		System.out.println(String.format("총점:%d, 평균:%.2f, 학점:%C", tot, avg, grade));
//		System.out.println(avg1);
//		System.out.println(avg2);
	}

}

조건식의 예

image-20240124095130527

'’는 캐릭터고 뒤에 널이 들어가있다 ““는 문자열이다.

image-20240124101713009

중첩 if문

  • if문 안에 또 다른 if문을 중첩해서 넣을 수 있습다.

  • if문의 중첩 횟수에는 거의 제한이 없습니다.

  • image-20240124101811052

else문

else문은 if문안에서 만족하는 조건이 없을 때 실하는 코드를 제공합니다.

if (conditin) {
    //조건이 참일 때 실행되는 코드
} else {
    //만족하는 조건이 없을 때 실행되는 코드
}

switch문

  • if문의 조건식과 달리, 조건식의 계산 결과가 int범위 이하의 정수만 가능합니다.
  • 조건식의 계산결과와 일치하는 case문으로 이동 후 break문을 만날 때 까지 문장들을 수행합니다.(break문이 없으면 switch문의 끝까지 진행한다.)
  • 일치하는 case문의 값이 없는 경우 default문으로 이동합니다.
  • case문의 값으로 변수를 사용할 수 없습니다.(리터럴, 상수만 가능)

참고로 if문은 비교 연산자를 사요할 수 있지만, switch문은 단순히 값이 같은지만 비교할 수 있습니다.

image-20240124102734074image-20240124103006018

image-20240124105305083

if문보다 조건이 간결할 때 주로 사용되어집니다.

중첩 switch문

  • switch문 안에 또 다른 switch문을 중첩해서 넣을 수 있습니다.
  • 중첩횟수에는 거의 제한이 없습니다.

image-20240124110530558

Math.random()

  • Math클래스에 정의된 난수 발생함수
  • 0.0과 1.0사이의 double값(실수값)을 반환합니다.(0.0 <= Math.random() < 1.0)

image-20240124110727950

반복문

  • 문장 또는 문장들을 반복해서 수행할 때 사용합니다.
  • 조건식과 수해할 블럭{} 또는 문장으로 구성합니다.
  • 반복회수가 중요한 경우에 for문을 그 외에는 while문을 사용합니다.
  • for문과while문은 서로 변경가능합니다.
  • do-while문은 while문의 변형으로 블럭{}이 최소한 한번은 수행될 것을 보장합니다.

image-20240124111728766

for문

  • 초기화, 조건식, 증감식 그리고 수행할 블럭{} 또는 문장으로 구성됩니다.

for ( 초기화;조건식;증감식) {
     //조건식이 true일 때 수행될 문장들을 적는다.
}

[참고] 반복하려는 문장이 단 하나일 때는 중괄호를 생략할 수 있다.

image-20240124111919412

중첩for문

  • for문 안에 또 다른 for문을 포함시킬 수 있습니다.
  • for문의 중첩횟수에는 거의 제한이 없습니다.

image-20240125170757107

- 문제 풀어보기

1부터 100까지의 합
image-20240124113546638



1부터 더했을때 100넘었을때 출력
image-20240124114812384


for문안에 조건식을 써주면(for(int i=1; sum>=100; i++)) 뒤에 i가 반복된 횟수를 출력해봤을 때 15가 나옵니다.
왜냐하면 ++은 계산 이후 값을 가지고 있기 때문에 출력했을때 +1되어 출력되기 때문입니다.



구구단 2단 출력하기
image-20240124121101988



구구단 출력하기
image-20240124121306308
위의 구구단은 세로로 길게 구구단이 출력이 되었는데 한눈에 보이게 구구단을 출력하고 싶습니다. 그렇다면 어떻게 해야할까요??
dani를 바꿔주면 됩니다.
image-20240124122104709


별찍기
우선 별 5개를 찍어보겠습니다.
image-20240124135153876
println이 아닌 print를하면 줄바꿈되지 않고 찍힙니다.

for문을 이용해서 별을 찍어봤는데 그러면 출력한 5개짜리 별을 5줄 출력하려면 어떻게 해야할까요???


별 다섯개 다섯줄 찍기
image-20240124135829984
다음은 아래 그림을 생성해보려고 합니다. 우선 패턴을 파악해보겠습니다.
image-20240124124123405

여기서 i는 수가 아니라 순서라고 생각하면 되는데 인덱스는 보통 0부터 시작합니다. j 한개 나오려면 j도 한번만 반복해야하며 범위가 시작하는 수인 0만이 존재해야합니다. 그래서i = 0이고 j < 1입니다.
이런식으로 식을 구성해보면 아래와 같습니다.

image-20240124141041445image-20240124141000116



트리찍기
아래의 그림을 출력해봅시다.
image-20240124143426603
우선 트리모양을 찍기 위해서는 큰 for문안에 공백을 찍는 for문과 *을 찍는 for문을 생성해 주어야합니다.
image-20240124144530013


알파벳과 숫자 번갈아가며 찍기
image-20240124144541831
나의 풀이 image-20240124150225454 선생님 풀이 image-20240124151847105
굳이 아스키코드를 사용하지 않아도 ++을 이용해서 알파벳 또한 순서대로 출력해줄 수 있으며 cnt를 생성해줘서 더 활용하기 쉽게 하셨습니다.

같은 방식을 활용한 다른 예제
image-20240124150323326

while문

  • 조건식과 수행할 블럭{} 또는 문장으로 구성됩니다.

while (조건식) {
   //조건식의 연산결과가 true일 때 수행될 문장들을 적는다.
}

image-20240124152713274

중첩 while문

  • while문 안에 또 다른 while문을 포함시킬 수 있습니다.
  • while문의 중첩횟수에는 거의 제한이 없습니다.

image-20240124152842514

image-20240124154719339

반복 제어문1 평가

image-20240124155642327

do-while문

  • while문의 변형, 블럭{}을 먼저 수행한 다음에 조건식을 계산한다.
  • 블럭{}이 최소한 1번 이상 수행될 것을 보장한다.

do {
    //조건식의 연산결과가 true일 때 수행될 문장들을 적는다.
} while (조건식) ;

image-20240124161436560

break문

  • 자신이 포함된 하나의 반복문 또는 switch문을 빠져 나옵니다.
  • 주로 if문과 함게 사용해서 특정 조건을 만고하면 반복문을 벗어나게 합니다.

continue 문

  • 자신이 포함된 반복문의 끝으로 이동한다.(다음 반복으로 넘어간다.)
  • continue문 이후의 문자들은 수행되지 않는다.(특정조건을 만족하는것들만 출력할때 사용됩니다. continue이후의 것은 건너뜁니다.)

image-20240124162215747

이름 붙은 반복문과 break, continue

  • 반복문 앞에 이름을 붙이고, 그 이름을 break, continue와 같이 사용함으로써 둘 이상의 반복문을 벗어나거나 반복을 건너뒤는 것이 가능합니다.

image-20240124162619861

오늘의 마지막 문제
image-20240124162901615

image-20240124164926060

image-20240124165109855

문제

image-20240124171201646
image-20240124172443890

인텔리제이 단축키모음

  • Ctrl + B : (클래스) : 연관된 클래스 목록보기
  • Ctrl + R : 단어 바꾸기
  • alt + enter : 클래스에서 테스트 만들기
  • alt + insert : 메서드 테스트 만들기
  • ctrl + alt + m : DI 생성자 따로 바깥으로 리팩토링
  • ctrl + e : 클래스 히스토리 내역을 볼 수 있음
  • ctrl + alt + v : 반환값 자동 생성
  • ctrl + alt + shift + t : 리팩토링
  • shift + f6 : 한번에 같은 단어 변경
  • ctrl + shift + t : 자동 테스트 패키지, 클래스, 메서드 생성
  • shift + f10 : 이전에 실행한걸 그대로 실행
  • ctrl + d : 라인복제
  • ctrl (or) alt + shift + ↑ / ↓ : 라인 이동 (구문 안에서만, 구문무시)
  • ctrl + alt + f10 : 마지막 실행 재실행
  • ctrl + alt + <- / -> : 이전 커서가 있던 화면으로 이동
  • iter : 향상된 for문 자동 구현
  • psvm : public static void main 자동 구현
  • sout : System.out.println()
  • soutv : 이전에 사용한 변수 출력
  • ctrl + F12 : 해당 클래스의 정보 (생성자, 메서드 등) 확인
  • ctrl + shift + f : 드래그한 모든 내용 검색
  • IntelliJ IDE에서는 CTRL + ALT + L을 눌러서 코드 자동 정렬을 할 수 있습니다.

카테고리:

업데이트:

댓글남기기