반복문
반복문은 초기화 → 조건식 → 실행 블록 → 증감식 순서로 진행된다.
- 초기화
- 사용할 조건값을 초기화한다.
- 조건식
- 초기화한 값이 주어진 조건에 맞는지 확인하며 true/false 값을 반환한다.
for문은 반복해야 하는 횟수가 지정될 때 주로 사용한다.
while문은 반복 횟수 보다는 상황에 의한 반복을 정의할 때 사용한다.
do - while문은 while 작업 중 최소 한 번은 실행해야 할 작업이 있는 경우 유리하다.
for 문
for문을 사용해서 구구단을 출력해보자.
package day01;
import java.util.Scanner;
public class Gugu {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); // 입력값 받기
int dan = scanner.nextln();
for(int i = 1; i <= 9; i++){
System.outprint(dan + "*" + i + "=" + (dan*i) + "\t");
}
}
}
출력할 단을 입력받기 위해 Scanner를 생성하고, nextln()를 통해 입력받은 값을 dan에 할당한다.
for문을 통해 구구단을 출력한다.
i를 1로 초기화한 후 9까지 dan의 값과 곱해주는 것이다.
// 출력값
9 // 입력값
9*1=9 9*2=18 ... 9*9=81
백준 2439 별 찍기 - 2
이중 for문을 사용해보자.
input = 5
output =
*
**
***
****
*****
전체코드
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.close();
for(int i=1; i <= n; i++){
for(int j=1; j <= n - i; j++){ // 공백과 별의 개수를 n과 맞추기
System.out.print(" ");
}
for(int k=0; k < i; k++){
System.out.print("*");
}
System.out.println();
}
}
}
로직
오른쪽 정렬로 별을 출력하기 위해서는 왼쪽으로 정렬된 공백이 필요하다.
별과 공백을 같이 출력하기 위해서는 두개의 for문이 필요하다.
코드 디테일
입력값 받기
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.close();
Scanner 클래스를 생성한 후 정수 n을 입력 받는다.
sc.close() 메소드를 사용하여 입력값을 받는 Scanner를 해제한다.
이중 for문으로 별 찍기
for(int i=1; i <= n; i++){
for(int j=1; j <= n - i; j++){ // 공백과 별의 개수를 n과 맞추기
System.out.print(" ");
}
for(int k=0; k < i; k++){
System.out.print("*");
}
System.out.println();
}
첫 번째로 시작하는 for문은 i가 1부터 n까지 증가(i++)하면서 반복하도록 설정한다.
두 번째로 시작하는 for문은 j가 1부터 n - i까지 증가하면서 반복한다. 이는 별이 아닌 공백을 채우기 위한 for문이다.
만약에 n이 5일 때 맨 오른쪽에 별 하나가 출력되고 나머지 왼쪽에 정렬된 4개의 공백이 필요하다. ( *)
이를 위해 열의 개수를 나타내는 n에 현재 별을 찍기 위해 증가되는 i의 값을 빼주면 된다.
세 번째로 시작하는 for문은 k가 0부터 i - 1까지 증가하면서, i개의 별을 출력한다.
위에서 공백 4개를 출력할 때 i는 하나를 출력하는 것이다.
while 문
while문은 for문과 달리 구성요소를 위한 영역이 표시되지 않으므로 주의해야 한다.
기본 구조
초기화
while(조건식) {
// 조건식이 true일 경우 실행할 문장
증감식;
}
이중 while문으로 구구단을 출력해보자.
package day01;
import java.util.Scanner;
public class Gugu {
public static void main(String[] args) {
int i = 1; // 초기값
while(i <= 9) { // 조건식
System.out.print(i + "단: ")
int j = 1; // 초기값2
while(j <= 9){
System.out.print(i + "*" + j + "=" + (i*j) + "\t"); // 실행문
j++; // 증감식2
}
i++; // 증감식
}
System.out.println(); // 개행
}
}
// 출력값
1*1=1 1*2=2 1*3=3 ...
2*1=2 2*2=4 2*3=6 ...
...
첫 번째 while문에서 단을 결정할 변수 i를 1로 초기화한다.
조건식이 i <= 9 이므로 1 ~ 9까지 반복한다.
두 번째 while문에서 곱해질 변수를 j로 선언하고 1로 초기화한다.
조건식이 j <= 9 이므로 1 ~ 9까지 반복한다.
반복되고 있는 i와 j의 곱을 이용하여 구구단을 출력한다.
출력 후 내부 반복문에서 사용되는 j를 증가시킨다. (j++)
이후에 외부 반복문에서 사용되는 i를 증가시킨다. (i++)
do - while 문
do - while문은 while과 문법이 비슷하다.
while문과 차이점은 일단 한 번 실행(do)하고 나서 반복(while)을 결정한다.
기본 구조
초기화
do{
// 조건식이 true일 경우 실행할 문장
증감식;
} while(조건식)
초기화 후 실행문과 증감식이 있는 블록을 먼저 수행하고나서 조건식을 확인한다.
즉, 조건에 관한 확인은 실행 블록을 한 번 수행한 후이다.
제곱근을 구하는 do - while문을 작성해보자.
package day01;
import java.util.Scanner;
public class DoWhile{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int i = 0;
do{
System.out.println("숫자를 입력하세요.");
i = scanner.nextln();
System.out.println(i + "의 제곱근은 : " + Math.sqrt(i));
} while(i > 0);
}
}
// 출력값
숫자를 입력하세요.
4
4의 제곱근은 : 2.0
int 타입의 초기화 변수 i를 0으로 초기화한다.
do를 이용해 반복문을 작성한다.
조건이 나오기 전에 블록 내용을 한 번 실행한다.
Math.sqrt(); 함수를 사용하여 제곱근을 반환한다.
do 블록을 실행한 후 조건식을 확인한다.
만약 i의 값이 0보다 크면 다시 do 블록을 실행하고, 그렇지 않다면 반복문을 종료한다.
즉, 0을 입력하면 프로그램이 종료된다.
'JAVA' 카테고리의 다른 글
[JAVA] 생성자 Constructor (0) | 2023.03.09 |
---|---|
[JAVA] Overloading (+ 객체 생성 개념, static) (0) | 2023.03.09 |
[JAVA] Method (2) | 2023.03.08 |
[JAVA] 조건문 (if - else, switch - case) (0) | 2023.03.06 |
[JAVA] 문법 (변수, 데이터 타입) (0) | 2023.03.06 |