반복문이란?
조건문과 더불어 아주아주 중요한 반복문을 알아보자.
반복문이란 기준값이 되는 변수를 선언하고 -> 조건을 설정하고 -> 증감을 입력하면
기준 변수의 값이 조건과 같아질 때 까지 증감하면서 실행문을 반복하는 구문이다.
변수로는 주로 i,j,k,m,n을 많이 사용하며 증감은 +와 -, * / % 까지 증감 연산자를 모두 사용할 수 있다.
반복문의 종류는 for문과 while문, do while문으로 나눌 수 있는데 먼저 for문부터 살펴보자 !
반복문 - for문 : 횟수 반복
for( 기준값; 조건; 증감 ) { 실행문 }
for(int i=1; i<=10; i++) // 증감에는 세미콜론을 붙이지 않는다.
System.out.println("A"); // A를 10번 반복해서 출력한다.
간단히 살펴보면, 기준이 될 변수 i의 값을 1로 선언하고 => i의 값이 10보다 작거나 같아질 때 까지
=> i가 1씩 증가한다는 구문으로 반복문을 만들었다.
해당 구문의 경우 i는 실행문을 실행하면 ++ 증감을 실행해 다시 맨 위로 돌아옴을 반복해서
1에서 시작해 2 3 4 5 6 7 8 9 10이 될 때 까지 실행문을 10번 반복하게 된다.
주의해야 할 점으론, 반복문에서 사용될 변수가 이전에 선언된 적이 없는 변수일 경우
자료형을 함께 적어 선언해주어야 한다.
" for(i=1; i<=10; i++) ==> X // for(int i=1; i<=10; i++) ==> O "
또, 증감 뒤에는 세미콜론을 붙이지 않으며 조건문과 마찬가지로 뒤따르는 실행문 1가지 만을 인식하기 때문에
실행문이 여러개가 되거나 for문 안에 if문을 적는 등 내용이 길어질 때에는 { } 중괄호를 이용해 묶어주어야 한다.
for(int i=1; ; i++)
System.out.println("hi");
이 예시처럼 조건을 주지 않고 공백으로 두게 되면 무한 반복을 실행한다.
for문 안에 for문을 넣어 이중 for문으로 이중 반복을 실행할 수도 있다.
이를 이용해 구구단을 출력한 화면이다😊
이중 for문을 이용하게 되면, 밖의 for문이 한 번 반복할 때 => 안의 for문은 조건만큼 모두 반복하고
=> 다시 밖의 for문을 반복하며 => 안의 for문을 조건만큼 모두 반복한다.
예시의 경우 i가 2일 때 j를 1~10까지 실행문을 10번 반복하고
i가 3이 되어 다시 j를 1~10까지 10번 반복, i가 4가 되어 j를 1~10까지 10번 반복하며 수행하는 것이다.
이번엔 조금 더 복잡한 예제를 만들어보았다.
1부터 100까지 자연수 중에서 2와 7의 공배수와 그 합계를 구하는 예제이다.
예제를 살펴보면 이번엔 for문 안에 if문을 사용해서 반복하는 도중 특정 조건에 해당할 때 실행문을 실행하게끔 만들었다.
for문은 1부터 100까지 반복하며 자연수 1~100을 인식하는 역할을 하며
if문에는 (i%2 == 0 && i%7 == 0) 라는 조건을 주어서 2의 배수인 동시에 7의 배수인 값일 때!
해당 값을 출력하는 실행문을 실행하고,
합계를 나타낼 변수 result에 해당 값을 차곡차곡 더해주는 역할을 하게끔 만들었다.
* i%2 == 0 : i를 2로 나눴을 때 나머지가 0으로 딱 떨어지는 수, 즉 2의 배수가 된다.
* &&는 '논리곱'을 나타내는 논리 연산자로 두 가지 식이 모두 true일 때 인식된다.
for문 결과값의 합계를 출력할 때에는 이렇게 변수를 선언해 값을 저장시키는 방법을 사용하는데,
int result; 처럼 그냥 선언하는 것 보다는 int result=0;으로 값을 0으로 주는 것이 권장된다.
보이지 않는 쓰레기 값을 방지하기 위함이다.
전역 변수와 지역 변수
int m; // m은 전역변수
for(m=1; m<=10; m++) { }
for(int i=1; i<=10; i++) { } // i는 지역변수
System.out.print(m); // 11
System.out.print(i); // error
for문에서 변수를 사용할 때 종종 오류를 마주하게 되는데, 바로 전역 변수와 지역 변수때문에 생기는 오류이다.
전역 변수는 전역에서(밖에서) 선언되어서 모두에게 영향을 줄 수 있는 변수이고,
지역 변수는 for문 내에서 선언되는 등 해당 지역에만 영향을 미치고 밖에는 영향을 줄 수 없는 변수이다.
예시의 경우 int m은 전역 변수이기 때문에 for문에서 따로 선언 없이 바로 m을 사용해도 인식이 되었으며
10까지 반복하고 11로 증감하자 for문의 조건에 맞지 않아 탈출해 출력값이 11로 나오게 됐다.
int i는 for문 안에서 선언된 지역 변수로 밖에서 i를 출력하면 i의 값을 알 수 없기 때문에 에러가 나오게 된다.
사용하려는 변수가 어디에서 선언이 되었는지를 주의하자 !
'JAVA' 카테고리의 다른 글
[JAVA] 문자열 비교, equals와 == 연산자의 차이 (0) | 2023.05.15 |
---|---|
[JAVA] 반복문 - while문, do while문 (0) | 2023.03.09 |
[JAVA] 조건문(논리문) - 삼항 연산자, if문, switch case문 (0) | 2023.03.06 |
[JAVA] 객체 생성 : new 연산자 (0) | 2023.02.24 |
[JAVA] 연산자와 전후위연산 (0) | 2023.02.24 |