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
- 자바의 정석 기초편 ch7
- 자바의 정석 기초편 ch4
- jpa 활용2 - api 개발 고급
- 타임리프 - 기본기능
- 게시글 목록 api
- 스프링 mvc2 - 검증
- 2024 정보처리기사 수제비 실기
- 스프링 mvc2 - 로그인 처리
- 2024 정보처리기사 시나공 필기
- 자바의 정석 기초편 ch14
- 자바의 정석 기초편 ch2
- 스프링 mvc1 - 스프링 mvc
- 스프링 고급 - 스프링 aop
- jpa - 객체지향 쿼리 언어
- 스프링 mvc2 - 타임리프
- 스프링 mvc1 - 서블릿
- 자바의 정석 기초편 ch8
- 코드로 시작하는 자바 첫걸음
- 자바의 정석 기초편 ch9
- 자바의 정석 기초편 ch12
- 자바의 정석 기초편 ch5
- @Aspect
- 자바의 정석 기초편 ch11
- 자바의 정석 기초편 ch6
- 스프링 입문(무료)
- 자바의 정석 기초편 ch1
- 자바의 정석 기초편 ch13
- 스프링 db1 - 스프링과 문제 해결
- 스프링 db2 - 데이터 접근 기술
- 자바의 정석 기초편 ch3
Archives
- Today
- Total
나구리의 개발공부기록
자바의 정석 기초편 ch4 - 13 ~ 15 [for문, 중첩for문] 본문
1) for문
- 조건을 만족하는 동안 블럭{}을 반복 - 반복 횟수를 알 때 적합
- 초기화 -> 조건식 -> 수행될 문장 -> 증감식 -> 조건식 -> 수행될 문장... (거짓이 될때까지 반복 후) -> for문 아웃
for (초기화; 조건식; 증감식) {
// 수행될 문장
}
for(int i=1; i<=5; i++){ // 1부터; 5까지; 1씩증가
System.out.println("I can do it.");
}
- for 문의 초기화, 조건식, 증감식은 생략이 가능
- 초기화 -> for문 밖에서 선언
- 조건식 -> 생략 시 항상 true -> 무한 반복문
int i = 1; // 변수를 for문 밖에서 미리 선언 -> 초기화 생략 가능
for ( ; ; ) { // for문의 초기화, 조건식(생략시 항상 ture), 증감식 생략
System.out.println("i="i+1);
}
(1) 기본 예제
public class ex4_8 {
public static void main(String[] args) {
for (int i = 1; i <= 3; i++) { // 블럭 안의 문장을 3번 반복
System.out.println("Hello");
}
}
}
public class ex4_8 {
public static void main(String[] args) { // i=1,2,4,8,16 - 16이 거짓이여서 4번만 반복
for (int i = 1; i <= 10; i=i*2) { // 블럭 안의 문장을 4번 반복
System.out.println("Hello");
}
}
}
public class ex4_8 {
public static void main(String[] args) { // i=10,9,8,7,6,5,4,3,2,1
for (int i = 10; i >= 1 ; i--) { // 블럭 안의 문장을 10번 반복
System.out.println(i);
}
}
}
(2) sum(합계)
- 처음부터 반복문을 작성하기 어렵다면 쉽게 코드를 먼저 작성하고 코드를 보다보면 간단히 바꿀 수 있게 됨.
public class ex4_10 {
public static void main(String[] args) {
int sum = 0; // 합계를 저장하기 위한 변수
// sum += 1;
// sum += 2;
// sum += 3;
// sum += 4;
// sum += 5;
//
// System.out.println(sum);
// }
//}
// 위의 계산을 아래의 간단한 반복문으로 작성
// 처음부터 반복문을 작성하기 어렵다면 위에 처럼 쉽게 코드를 먼저 작성하고,
// 코드를 보다보면 간단히 바꿀 수 있게 됨.
for (int i = 1; i <= 5 ; i++) {
sum += i ; // sum = sum + i;
System.out.printf("1부터 %2d 까지의 합: %2d%n", i, sum);
}
}
}
(3) 변수 추가
public class ex4_8 {
public static void main(String[] args) { // 타입이 같은 변수를 여러개 쓸 수 있음
for (int i = 1, j = 10,k = 20; i <= 10 ; i++, j--, k--) { // i가 10이 될 때 까지 반복
System.out.println(i+","+j+","+k);
}
}
}
출력값
1,10,20
2,9,19
3,8,18
4,7,17
5,6,16
6,5,15
7,4,14
8,3,13
9,2,12
10,1,11
(4) 변수를 밖으로 빼기
- for문 안에 선언된 변수는 해당 블럭 안에서만 사용 가능
- for문 밖에서 해당 변수를 사용하려면 변수를 밖으로 빼줘야 함
public class ex4_8 {
public static void main(String[] args) { // 변수를 여기에서부터
int i; // for문의 변수를 밖으로 빼서 선언
for (i = 1; i <= 10; i++) {
System.out.println(i);
}
System.out.println(i);
} // 여기까지 쓸 수 있게 됨
}
//단, 변수의 scope(범위)는 작을 수록 좋다 - 확인 해야할 범위가 많아짐
//scope - 선언된 위치부터 선언된 블럭의 끝까지
(5) 반복문이 잘못 되었을 때 확인 방법
- 출력에 변수 값을 선언하면 확인 가능
** 주의
- 조건식은 주의깊게 작성해야함
- 무한 반복에 빠질 수 있다.. -> 콘솔창의 stop버튼 (빨간색 네모버튼)으로 멈출 수 있음
public class ex4_8 {
public static void main(String[] args) { //무한반복
for (int i = 10; 1 >= 1 ; i--) { // 조건식이 항상 true
System.out.println(i);
}
}
}
(6) 무한반복문
- 조건식 생략을 생략하면 무한 반복문
public class ex4_8 {
public static void main(String[] args) {
int i=1 ; // 초기화 선언
for (; ; ) { // 조건식 생략 - true로 간주되어 무한반복문이 됨
System.out.println(i);
}
}
}
2) 중첩 for문
- for문 안에 다른 for문을 포함 (여러개 가능)
- 안쪽 for문이 먼저 재생 -> 바깥쪽 for문 재생 -> out
public class ex4_11 {
public static void main(String[] args) {
for (int i = 2; i<=9 ; i++) { // i = 2단 ~ 9단까지 출력
for (int j = 1; j <= 9; j++) { // j = 각 단을 1 ~ 9까지 곱하기
System.out.println(i+" * "+j+" = "+(i*j));
}
System.out.println(); // ()공란일 경우 줄바꿈
}
}
}
(1) 동일한 개수 반복
// 1) 원초적인 방법
System.out.println("**********");
System.out.println("**********");
System.out.println("**********");
System.out.println("**********");
System.out.println("**********");
// 2) 반복문을 활용 해서 아래처럼 변경
for (int i = 1; i <= 5; i++) {
System.out.println("**********");
}
// 3) 중첩 반복문을 활용하여 아래 처럼 변경(수정이 용이)
for (int i = 1; i <= 5; i++) { // 아래의 for문을 5번 반복
for (int j = 1; j <= 10; j++) { // * 10번 반복
System.out.print("*"); // * 1줄로 10개 찍기위해 print로 출력
}
System.out.println(); // 줄바꿈
}
출력값
**********
**********
**********
**********
**********
(2) 순차적으로 증가
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= i; j++) { // j 를 i의 개수만큼 * 찍기
System.out.print("*");
}
System.out.println();
}
출력값
*
**
***
****
*****
** 출처 : 남궁성의 정석코딩_자바의정석_기초편 유튜브 강의
'유튜브 공부 > JAVA의 정석 기초편(유튜브)' 카테고리의 다른 글
자바의 정석 기초편 ch4 - 20 ~ 24 [break문, continue문, 이름붙은 반복문] (0) | 2023.11.08 |
---|---|
자바의 정석 기초편 ch4 - 16 ~ 19 [while문, do-while문] (0) | 2023.11.07 |
자바의 정석 기초편 ch4 - 9 ~ 12[switch문, 임의의 정수 만들기] (1) | 2023.11.06 |
자바의 정석 기초편 ch4 - 1 ~ 8[조건문과 반복문, If문,if-else문,if-esle if문, 중첩if문] (0) | 2023.11.06 |
자바의 정석 기초편 ch3 - 15 ~ 19[논리연산자,논리부정연산자,조건연산자,대입연산자] (0) | 2023.11.05 |