quilt code
[Java] 조건문: for, while, do-while 본문
1. for문
- 반복 횟수를 알고 있을 때 주로 사용 (정해진 횟수만큼 반복)
* 1부터 10까지 더하기
| for (int i = 1 ; i <= 10 ; i++) { sum = sum + i; } |
||
| int i = 1 | 초기화 부분: 변수를 초기화할 때 사용 | ① 선언, 초기화 확인 i = 1 |
| i <= 10 | 조건식 부분: 이 부분의 결과가 참이어야 반복문 실행 | ② 조건식 확인: 1 <= 10 ->참 ⑤ 조건식 확인: 2 <= 10 -> 참 -> 반복 i의 값이 10 초과하면 |
| i++ | 증감식 부분 | ④ i 값에 1 더해줌 |
| sum = sum + i ; | ③ 실행 | |
| ⑥ 프린트 |
ex1) 1~10까지 합 출력
sum = sum + 1;
sum = sum + 2;
....
sum = sum + 10;
을 줄이기 위해 for문 사용

ex2) 1~100까지 합 출력

**sum += i ;
i 주의
ex3) 1~100까지 합 출력

루프 카운터 변수 루프를 얼만큼 했느냐 세어주는거 (카운팅)
근데 왜 i-1??
*중첩 for문
ex) 구구단 출력

| for (int m=2; m<=9; m++) { | 바깥쪽 for문 |
| for (int n=1; n<=9; n++) { | 중첩 for문 |
바깥쪽 for문이 한번 실행할 때마다 중첩된 for문은 지정된 횟수만큼 반복해서 돎
-> 다시 바깥쪽 for 문으로 돌아감
2. while문
- 조건식이 true일 경우에 반복
- 조건식에는 비교 또는 논리 연산식이 옴 -> 조건식이 false가 되면 반복을 멈추고 종료
| int i = 1; | |
| while (i <= 10) { | |
| i++; |
ex1) 1부터 100까지 합 출력

| int sum = 0; | 합계를 저장 변수 |
| int i = 1; | 루프 카운터 변수 (while이 시작되기 전에 선언해야함) |
| while(i<=100) { | |
| sum += i; | |
| i++; | |
| print ("1~" + (i-1) + "합: " + sum); | 루프 카운터 변수 합계를 저장할 변수 |
3) do-while문
- 우선 실행하고 조건식을 평가함
- 한번은 실행함
4) break문
- 반복문 실행 중지할 때 사용
- 조건과 함께 사용 (주로 if문)
ex1) break로 while 종료

ex2) Label : 중첩된 반복문에서 바깥쪽 반복문까지 종료시키려면 바깥쪽 반복문에 이름(Label)을 붙이고 'break 이름;'실행

5) continue문
- for문, while문, do-while문에서만 사용
- 블록 내부에서 continue문이 실행되면 for문의 증감식 또는 while문, do-while문의 조건식으로 이동
- 반복문을 종료하지 않고 계속 반복 수행
| for ( ) { | |
| 1 | |
| 2 | |
| 3 | |
| continue; | 1->2->3->continue |
| 4 | 4,5는 실행하지 않음 |
| 5 |
p.160
1. 반복문의 종류: for, while, do-while
2. for문 이용 1~100까지의 정수 중 3의 배수의 총합을 구하는 코드

int sum = 0; 합계를 저장할 변수
**0부터 시작을 해서 얼만큼 차는 지 계산해야는 용도. 0값 지정! 용기 비우기
for (int i=3 ; i<=100 ; i++) 3부터 시작..?해도 되고 1부터 시작해도 됨 100이하의 정수 i++
if (i%3 == 0) i를 3으로 나눈 나머지가 0이라면(3의 배수라면) (조건)
sum = sum + i
3. while 문과 Math.random() 메소드 이용, 두개의 주사위를 던졌을때 나오는 눈의 형태: (눈1,눈2)로 출력,
눈의 합이 5이면 멈추는 코드

| while (true) | 반복문 (주사위 굴리기) |
| Random random = new Random(); | 랜덤 |
| int dice1 = random.nextInt(6)+1; | |
| int dice2 = random.nextInt(6)+1; | |
| if ((dice1+dice2) == 5) | 주사위1과 2의 합이 5이면 |
| break | 멈춤 |
4. 중첩 for문을 이용해 방정식 4x + 5y = 60의 모든 해를 구해서 (x,y) 형태로 출력 (x,y는 10이하의 자연수)

| for (int i=1 ; i<=10 ; i++) | x에 들어갈 i의 값 |
| for (int j=1 ; j<=10 ; j++) | y에 들어갈 j의 값 |
| if ((4*i + 5*j) == 60) | 4x + 5y = 60 |
5. for문을 이용해서 * 출력
*
**
***
****

for (int i=1 ; i<=4 ; i++) :1부터 시작해서 4자리 (4칸)
for (int j=1 ; j<=i ; j++) : i가 1일때 (1행에서) 별이 하나만 찍혀야함 (j<=1)
print "*"
println: 만족하지 않는 경우 한줄 띄우기
★★★별찍기★★★
기본원리: 이중 for문으로 구현
| for (int i=0 ; i <5 ; i++) { | 행 |
| for (int j=0 ; j < i+1 ; j++ { | 열: 별을 몇개 찍는지 **i가 0일때 j가 1 (1행에 들어갈 별 갯수는 1개) i가 1일때 j가 2 (2행에 들어갈 별 갯수는 2개) .. 이런 식으로 진행되기 때문에 j < i+1 |
| print "*" |
| case1) int i=0 ; i <5 ; i++ | 0부터 시작해서 0,1,2,3,4까지 다섯자리 |
| case2) int i=1 ; i <=4 ; i++ | 1부터 시작해서 1,2,3,4까지 다섯자리 |
| 안쪽for | |||||
| 바깥 for |
★ | ||||
| ★ | ★ | ||||
| ★ | ★ | ★ | |||
| ★ | ★ | ★ | ★ | ||
| ★ | ★ | ★ | ★ | ★ | |
6. 별 찍기
*
**
***
****
틀린 예)

정답인지 아닌지는 모르겠지만 그래도 별이 찍히긴 함

for (int i = 1; i<=4 ; i++) {
for (int j=4; j>i ; j--) { :한칸씩 사라지는
print " " :공백
>>공백을 먼저 찍고
for (int j=0 ; j<i ; j++) : 별 찍기
print"*"
>>별찍기
https://public-void.tistory.com/9
[별 찍기] for문을 이용한 다양한 별 찍기
자바를 배울 때 맨 처음 HelloWrold를 출력해보듯이 for문을 배우면 항상 빠지지 않는 별 찍기를 해보려고 한다. 기초적인 문제지만 막상 해보려고 하면 은근히 헷갈려 고민하게 되기 때문에 기록해
public-void.tistory.com
7. while문과 scanner 이용해서 키보드로 입력된 데이터로 예금, 출금, 조회, 종료 기능을 제공하는 코드



'daily > Java' 카테고리의 다른 글
| [Java] 참조타입-배열 (0) | 2022.12.29 |
|---|---|
| [Java] 참조 타입 (0) | 2022.12.28 |
| [Java] 연산자 예제 (0) | 2022.12.26 |
| [Java] 조건문과 반복문 (0) | 2022.12.26 |
| [Java] 연산자 (0) | 2022.12.23 |