[Java]04.조건문
조건문
- 조건문은 조건식과 실행될 하나의 문장 또는 블럭{}으로 구성됩니다.
- Java에서 조건문은 if문과 switch문 두 가지 뿐입니다.
- if문이 주로 사용되며, 경우의 수가 많은 경우 switch문을 사용할 것을 고려합니다.
- 모든 switch문은 if문으로 변경이 가능하지만, if문은 switch문으로 변경할 수 없는 경우가 많습니다.
if(조건식) {문장들}
if문
- if문은 if, if-else, if-else if의 세가지 형태가 있다
- 조건식의 결과는 반드시 true 또는 false 이어야 한다.
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);
}
}
조건식의 예
'’는 캐릭터고 뒤에 널이 들어가있다 ““는 문자열이다.
중첩 if문
-
if문 안에 또 다른 if문을 중첩해서 넣을 수 있습다.
-
if문의 중첩 횟수에는 거의 제한이 없습니다.
-
else문
else문은 if문안에서 만족하는 조건이 없을 때 실하는 코드를 제공합니다.
if (conditin) {
//조건이 참일 때 실행되는 코드
} else {
//만족하는 조건이 없을 때 실행되는 코드
}
switch문
- if문의 조건식과 달리, 조건식의 계산 결과가 int범위 이하의 정수만 가능합니다.
- 조건식의 계산결과와 일치하는 case문으로 이동 후 break문을 만날 때 까지 문장들을 수행합니다.(break문이 없으면 switch문의 끝까지 진행한다.)
- 일치하는 case문의 값이 없는 경우 default문으로 이동합니다.
- case문의 값으로 변수를 사용할 수 없습니다.(리터럴, 상수만 가능)
참고로 if문은 비교 연산자를 사요할 수 있지만, switch문은 단순히 값이 같은지만 비교할 수 있습니다.
if문보다 조건이 간결할 때 주로 사용되어집니다.
중첩 switch문
- switch문 안에 또 다른 switch문을 중첩해서 넣을 수 있습니다.
- 중첩횟수에는 거의 제한이 없습니다.
Math.random()
- Math클래스에 정의된 난수 발생함수
- 0.0과 1.0사이의 double값(실수값)을 반환합니다.(0.0 <= Math.random() < 1.0)
반복문
- 문장 또는 문장들을 반복해서 수행할 때 사용합니다.
- 조건식과 수해할 블럭{} 또는 문장으로 구성합니다.
- 반복회수가 중요한 경우에 for문을 그 외에는 while문을 사용합니다.
- for문과while문은 서로 변경가능합니다.
- do-while문은 while문의 변형으로 블럭{}이 최소한 한번은 수행될 것을 보장합니다.
for문
- 초기화, 조건식, 증감식 그리고 수행할 블럭{} 또는 문장으로 구성됩니다.
for ( 초기화;조건식;증감식) {
//조건식이 true일 때 수행될 문장들을 적는다.
}
[참고] 반복하려는 문장이 단 하나일 때는 중괄호를 생략할 수 있다.
중첩for문
- for문 안에 또 다른 for문을 포함시킬 수 있습니다.
- for문의 중첩횟수에는 거의 제한이 없습니다.
- 문제 풀어보기
✔ 1부터 100까지의 합
✔ 1부터 더했을때 100넘었을때 출력
for문안에 조건식을 써주면(for(int i=1; sum>=100; i++)) 뒤에 i가 반복된 횟수를 출력해봤을 때 15가 나옵니다.
왜냐하면 ++은 계산 이후 값을 가지고 있기 때문에 출력했을때 +1되어 출력되기 때문입니다.
구구단 2단 출력하기
✔ 구구단 출력하기
위의 구구단은 세로로 길게 구구단이 출력이 되었는데 한눈에 보이게 구구단을 출력하고 싶습니다. 그렇다면 어떻게 해야할까요??dan
과 i
를 바꿔주면 됩니다.
✔ 별찍기
우선 별 5개를 찍어보겠습니다.
println이 아닌 print를하면 줄바꿈되지 않고 찍힙니다.
for문을 이용해서 별을 찍어봤는데 그러면 출력한 5개짜리 별을 5줄 출력하려면 어떻게 해야할까요???
별 다섯개 다섯줄 찍기
다음은 아래 그림을 생성해보려고 합니다. 우선 패턴을 파악해보겠습니다.
여기서 i는 수가 아니라 순서라고 생각하면 되는데 인덱스는 보통 0부터 시작합니다. j 한개 나오려면 j도 한번만 반복해야하며 범위가 시작하는 수인 0만이 존재해야합니다. 그래서i = 0이고 j < 1입니다.
이런식으로 식을 구성해보면 아래와 같습니다.
트리찍기
아래의 그림을 출력해봅시다.
우선 트리모양을 찍기 위해서는 큰 for문안에 공백을 찍는 for문과 *을 찍는 for문을 생성해 주어야합니다.
알파벳과 숫자 번갈아가며 찍기
나의 풀이 선생님 풀이
굳이 아스키코드를 사용하지 않아도 ++을 이용해서 알파벳 또한 순서대로 출력해줄 수 있으며 cnt를 생성해줘서 더 활용하기 쉽게 하셨습니다.
같은 방식을 활용한 다른 예제
while문
- 조건식과 수행할 블럭{} 또는 문장으로 구성됩니다.
while (조건식) {
//조건식의 연산결과가 true일 때 수행될 문장들을 적는다.
}
중첩 while문
- while문 안에 또 다른 while문을 포함시킬 수 있습니다.
- while문의 중첩횟수에는 거의 제한이 없습니다.
반복 제어문1 평가
do-while문
- while문의 변형, 블럭{}을 먼저 수행한 다음에 조건식을 계산한다.
- 블럭{}이 최소한 1번 이상 수행될 것을 보장한다.
do {
//조건식의 연산결과가 true일 때 수행될 문장들을 적는다.
} while (조건식) ;
break문
- 자신이 포함된 하나의 반복문 또는 switch문을 빠져 나옵니다.
- 주로 if문과 함게 사용해서 특정 조건을 만고하면 반복문을 벗어나게 합니다.
continue 문
- 자신이 포함된 반복문의 끝으로 이동한다.(다음 반복으로 넘어간다.)
- continue문 이후의 문자들은 수행되지 않는다.(특정조건을 만족하는것들만 출력할때 사용됩니다. continue이후의 것은 건너뜁니다.)
이름 붙은 반복문과 break, continue
- 반복문 앞에 이름을 붙이고, 그 이름을 break, continue와 같이 사용함으로써 둘 이상의 반복문을 벗어나거나 반복을 건너뒤는 것이 가능합니다.
오늘의 마지막 문제
문제
인텔리제이 단축키모음
- 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을 눌러서 코드 자동 정렬을 할 수 있습니다.
댓글남기기