Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- @Aspect
- 스프링 mvc1 - 서블릿
- 스프링 mvc2 - 로그인 처리
- 스프링 db2 - 데이터 접근 기술
- 자바의 정석 기초편 ch3
- 스프링 mvc1 - 스프링 mvc
- 게시글 목록 api
- 스프링 mvc2 - 타임리프
- jpa 활용2 - api 개발 고급
- 자바의 정석 기초편 ch11
- 자바의 정석 기초편 ch9
- 자바의 정석 기초편 ch6
- 자바의 정석 기초편 ch7
- 타임리프 - 기본기능
- 자바의 정석 기초편 ch2
- 자바의 정석 기초편 ch12
- 스프링 입문(무료)
- 자바의 정석 기초편 ch8
- 스프링 db1 - 스프링과 문제 해결
- 2024 정보처리기사 시나공 필기
- 스프링 고급 - 스프링 aop
- 자바의 정석 기초편 ch4
- 2024 정보처리기사 수제비 실기
- 자바의 정석 기초편 ch14
- jpa - 객체지향 쿼리 언어
- 코드로 시작하는 자바 첫걸음
- 자바의 정석 기초편 ch13
- 스프링 mvc2 - 검증
- 자바의 정석 기초편 ch5
- 자바의 정석 기초편 ch1
Archives
- Today
- Total
나구리의 개발공부기록
자바의 정석 기초편 ch4 - 1 ~ 8[조건문과 반복문, If문,if-else문,if-esle if문, 중첩if문] 본문
유튜브 공부/JAVA의 정석 기초편(유튜브)
자바의 정석 기초편 ch4 - 1 ~ 8[조건문과 반복문, If문,if-else문,if-esle if문, 중첩if문]
소소한나구리 2023. 11. 6. 16:401) 조건문과 반복문
- 조건문과 반복문을 제어문(flow control statement)이라 부름
(1) 조건문
- 조건을 만족할때만 { } 를 수행 (0 ~ 1번)
- if / switch
(2) 조건문 예시
if (score > 60) {
System.out.println("합격입니다.");
System.out.println("축하드립니다.");
}
- 참이면 위의 문장들을 순차적으로 실행하고 거짓이면 모두 건너뜀
(3) 반복문
- 조건을 만족하는 동안 { }를 수행 (0 ~ n번)
- for / while
(4) 반복문 예시
int i = 10;
while (i-- > 0) {
System.out.println(i);
}
- 조건을 확인해서 조건을 만족하는 동안 계속 반복하고 조건을 벗어나면 다음 문장을 실행
- 조건이 처음부터 안맞으면 건너뜀
2) If문
- 조건식이 참(true)일 때, 블록 { }안의 문장들을 수행
- 조건식에는 연산결과가 true or false인 식이 와야함 // 그 외의 식은 에러가 발생
if (조건식) { // 시작
조건식 문장
} // 끝
// socre의 값이 80이면 80 > 60 이므로 true가 되어 합격입니다가 출력됨
if (score > 60) {
System.out.println("합격입니다.");
}
(1) 자주쓰는 조건식
3) 블록 { }
- 여러 문장을 하나로 묶어주는 것
- 코드 작성시 가독성을 위해 블록안의 내용은 들여쓰기 하는 습관을 권장
- if문에 속한 문장이 하나인 경우 블록을 생략이 가능함 (C언어, 자바 등)
- 그러나 가독성도 좋지 않고 실수를 할 수 있기 때문에 간단한 경우가 아니고서는 대부분은 블록을 사용하는 것을 권장.
if(score > 60)
System.out.println("합격입니다."); // If문에 속한 문장
System.out.println("축하드립니다."); // If문에 속하지 않은 문장
4) if - else문
- 둘 중 하나 - 조건식이 참일 때와 거짓일 때로 나눠서 처리
if (조건식) {
// 조건식이 참일 때 수행 될 문장
} else {
// 조건식이 거짓일 때 수행 될 문장
}
5) if-else if문
- 여러개의 조건식 중 하나만 실행 (여러개가 실행 되는 경우는 없음)
(1) 예제
- 점수에 따라 등급을 구분
import java.util.Scanner; // 스캐너기능 사용하기 위함
public class ex4_4 {
public static void main(String[] args) {
int score = 0; // 점수를 저장하기 위한 변수
char grade = ' '; //학점을 저장하기 위한 변수. 공백으로 초기
System.out.print("점수를 입력하세요. >");
Scanner scanner = new Scanner(System.in);
score = scanner.nextInt(); // 화면을 통해 입력받은 순자를 score에 저장
if (score >= 90) { // score가 90점 보다 같거나 크면 참 실행 후 바로 조건문 아웃
grade = 'A';
} else if (score >= 80) { // score가 80점 보다 같거나 크면 참 실행 후 바로 조건문 아웃
grade = 'B';
} else if (score >= 70) { // score가 70점 보다 같거나 크면 참 실행 후 바로 조건문 아웃
grade = 'C';
} else { // score가 그 외일 때 실행 후 조건문 아웃
grade = 'D';
}
System.out.println("당신의 학점은 "+ grade +"입니다.");
}
}
(2) 코드 리팩토링 적용시(코드를 더욱 좋게 바꾸는 작업)
- grade 변수에 기본값을 설정하여 모든조건을 만족하지 않을 경우 기본값을 출력되게 하여 마지막의 else블록을 쓰지 않도록 수정
- else를 써야하는 경우도 있지만 쓰지 않아도 되는 경우에는 제외가 가능하니 고민하는 연습이 필요함
import java.util.Scanner;
public class ex4_4 {
public static void main(String[] args) {
int score = 0; // 점수를 저장하기 위한 변수
char grade = 'D'; // 기본값 초기화
System.out.print("점수를 입력하세요. >");
Scanner scanner = new Scanner(System.in);
score = scanner.nextInt(); // 화면을 통해 입력받은 순자를 score에 저장
if (score >= 90) { // score가 90점 보다 같거나 크면 참 실행 후 바로 조건문 아웃
grade = 'A';
} else if (score >= 80) { // score가 80점 보다 같거나 크면 참 실행 후 바로 조건문 아웃
grade = 'B';
} else if (score >= 70) { // score가 70점 보다 같거나 크면 참 실행 후 바로 조건문 아웃
grade = 'C';
}
System.out.println("당신의 학점은 "+ grade +"입니다.");
}
}
(3) 위의 if-else if문의 조건을 아래처럼 전부 작성하지 않아도 되는 이유
- 앞에서 거짓인 값들을 제외하고 다음 조건문으로 넘어가기 때문에 조건문을 간추릴 수 있음 -> if-else if문이기에 가능
if (score >= 90) {
grade = 'A';
} else if (80 <= score && score < 90) { // 80 ≤ score < 90
grade = 'B';
} else if (70 <= score && score < 80) { // 70 ≤ score < 80
grade = 'C';
} else { // score < 70
grade = 'D';
}
6) 중첩 If문 - if문 안의 If문
- 중첩 횟수는 제약이 없음 (1000번 이상도 가능..)
if (조건식1) {
// 조건식 1의 연산 결과가 true일 때 수행 될 문장을 작성
if (조건식2) {
// 조건식 2의 연산 결과가 true일 때 수행 될 문장을 작성
} else {
// 조건식 1이 true, 조건식2가 false일 때 수행되는 문장을 작성
}
} else {
// 조건식 1이 false일 때 수행되는 문장을 작성
}
(1) 중첩 if문 작성 시 블록 생략에 주의!
- 아래의 왼쪽의 그림이 언뜻 보면 else블록이 첫번째 If문에 속한 것 처럼 보이지만, 블록 생략 시 가까운 if문을 적용 하기 때문에 아래 오른쪽의 그림처럼 코드가 실행 되어 버림.
- 위에서 말했던 것처럼 이러한 상황에서는 가독성 좋게 가급적 블록 생략을 하지않도록 하거나 가독성 좋게 들여쓰기 등을 잘해야 함
(2) 정상적인 블록을 생략한 중첩 if문
- 이렇게하면 if-else 문 안에 if문이 중첩되어 정상적으로 로직이 작동하지만, 가독성이 좋지 않기 때문에 가급적 괄호를 사용하는 것을 권장함
if (num >= 0) {
if (num != 0)
sign = '+';
} else {
sign = '-';
}
(3) 예제
- 점수에 따라 등급을 구분 -> 등급 안에서 점수에 따라 세부적인 등급을 구분
import java.util.Scanner;
public class ex4_5 {
public static void main(String[] args) {
int score = 0; // 점수를 저장하기 위한 변수
char grade = ' ', opt = '0';
System.out.print("점수를 입력하세요. >");
Scanner scanner = new Scanner(System.in);
score = scanner.nextInt(); // 화면을 통해 입력받은 순자를 score에 저장
System.out.printf("당신의 점수는 %d입니다.%n", score);
if (score >= 90) { // score가 90점 보다 같거나 크면 참 실행 후 바로 조건문 아웃
grade = 'A';
if (score >= 98 ) { // 90점 이상 중에서도 98점 이상은 A+
opt = '+';
} else if (score < 94) { //90점 ~ 94점 미만은 A-
opt = '-';
}
} else if (score >= 80) { // score가 80점 보다 같거나 크면 참 실행 후 바로 조건문 아웃
grade = 'B';
if (score >= 88 ) {
opt = '+';
} else if (score < 84) {
opt = '-';
}
} else if (score >= 70) { // score가 70점 보다 같거나 크면 참 실행 후 바로 조건문 아웃
grade = 'C';
if (score >= 78 ) {
opt = '+';
} else if (score < 74) {
opt = '-';
}
}
else { // score가 그 외일 때 실행 후 조건문 아웃
grade = 'D';
}
System.out.printf("당신의 학점은 %c%c입니다.%n", grade, opt);
}
}
** 출처 : 남궁성의 정석코딩_자바의정석_기초편 유튜브 강의
'유튜브 공부 > JAVA의 정석 기초편(유튜브)' 카테고리의 다른 글
자바의 정석 기초편 ch4 - 13 ~ 15 [for문, 중첩for문] (0) | 2023.11.07 |
---|---|
자바의 정석 기초편 ch4 - 9 ~ 12[switch문, 임의의 정수 만들기] (1) | 2023.11.06 |
자바의 정석 기초편 ch3 - 15 ~ 19[논리연산자,논리부정연산자,조건연산자,대입연산자] (0) | 2023.11.05 |
자바의 정석 기초편 ch3 - 9 ~ 14[사칙연산자, 산술변환 반올림 Math.round(), 나머지 연산자, 비교연산자, 문자열의 비교] (0) | 2023.11.05 |
자바의 정석 기초편 ch3 - 5 ~ 8[증감연산자, 부호연산자, 형변환 연산자, 자동 형변환] (0) | 2023.11.05 |