quilt code

[Java] 조건문: for, while, do-while 본문

daily/Java

[Java] 조건문: for, while, do-while

김뱅쇼 2022. 12. 27. 21:07

1. for문 

  • 반복 횟수를 알고 있을 때 주로 사용 (정해진 횟수만큼 반복)

 

* 1부터 10까지 더하기 

for (int i = 1 ; i  <= 10 ; i++) {
       sum = sum + i;

}
print
   
int i = 1 초기화 부분: 변수를 초기화할 때 사용 ① 선언, 초기화 확인 i = 1
i <= 10 조건식 부분: 이 부분의 결과가 참이어야 반복문 실행 ② 조건식 확인: 1 <= 10 ->참
⑤ 조건식 확인: 2 <= 10 -> 참 -> 반복 
i의 값이 10 초과하면 
i++ 증감식 부분 ④ i 값에 1 더해줌
sum = sum + i ;   ③ 실행 
print   ⑥ 프린트

 

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;  
print  
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
print  

 

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