for문을 사용한다면?
코딩을 하다보면 같은 작업을 반복하는 코드가 필요할 경우가 있는데 이때 사용하는 것이 반복문이다.
반복문에서 사용하는 방법중 for문을 이용해 간단한 반복문을 만들어 보자면
int a = 0;
a = a + 1;
a = a + 2;
a = a + 3;
a = a + 4;
System.out.println("1~4의 합은" + a);
우선 이렇게 간단한 예제 코드가 있다면 이걸 반복문으로 처리할 수 있는데
int a = 0;
for(int i = 1; 1 <= 4; i++) {
a = a + i;
}
System.out.println("1~4까지의 합은" + a);
이런식으로 for문을 이용해 i라는 변수에 1부터 시작해 4가 되기까지 숫자를 하나씩 증가시키면서 a에 값을 더하는 코드를 작성했는데 정말 이전의 무한 반복을 통한 방법보다 확실하게 코드가 간결해져서 제대로 익힌다면 큰 도움이 될 것같다.
위 그림은 for문의 실행 흐름을 보여주는데 조건식에 맞는다면 실행문을 실행하고 나서 증감식을 통해 숫자를 증감하고 나서 다시 조건식으로 돌아가 조건에 허용하는 한 계속 반복하는 실행 흐름을 보여주고 있다.
이때 초기화식을 포함한 조건식 증감식은 2개이상 일 수도 있는데 이때 2번째로 쓰이는 것에 타입을 정해주지 않으면 기존에 정해두었던 타입을 가진다. (자주 사용하는 방식은 아니라고 하니 이런 방법이 있다고만 알고 넘어가자)
for문또한 if문에서 말했던 중첩을 사용할 수 있는데 이걸 중쵭된 for문 이라고 한다.
이 중첨된 for문을 보여줄 수 있는 예제는 구구단이라고 하는데 직접 코드를 작성해 실행결과를 확인했다.
for(int f = 2; f <= 9; f++) {
System.out.println("***" + f + "단***");
for(int i = 1; i <= 9; i++) {
System.out.println(f + "X" + i + "=" + (f*i));
}
}
for문안에 for문을 작성해 처음 for문의 f는 2에서 9까지 변하면서 8번 반복실행하고 실행이 될때마다 중첩 for문의 i 가 1~9까지 변하면서 9번을 실행하는 흐름일 가지고 있다. f가 2일때 i는 1~9까지 9번을 실행하고 그걸 f가 9로 변할때까지 계속 반복적으로 실행이되 구구단이 출력이되는 걸 확인할 수 있었다.
while 문을 사용한다면?
for문이 ()안에 정해진 수만큼 실행이 된다면 while문은 조건식을 통해 true일 경우만 실행하고 false일 경우 반복을 멈추고 중지한다.
while문은 if문과 비슷한 실행흐름을 가지고 있어 이해하는데 어려움은 느끼지 않았다.
조건식을 평가해 true일 경우만 실행문이 실행되고 다시 돌아가 조건식으로 값을 평가해 반복을 할지 중지할지를 판단하는데 for문에서 자주사용하는 i++같은 연사자를 실행문에 넣어서 실행이 끝나고 난뒤 주어진 값을 하나 증가해 조건식에 부합하는지 확인하는 흐름을 가진다.
int i = 1;
while(i <= 7) {
System.out.println(i);
i++;
}
예제 코드로 작성해본 결과값은 1부터 7까지의 숫자가 차례대로 출력이되는 걸 알수 있었다.
import java.util.Scanner;
public class PrintFrom1To10Example {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
boolean run = true;
int speed = 0;
while(run) {
System.out.println("--------------------");
System.out.println("1. 증속 | 2. 감속 | 3. 중지");
System.out.println("--------------------");
System.out.println("선택: ");
String strNum = scanner.nextLine();
if(strNum.equals("1")) {
speed++;
System.out.println("현재속도 =" + speed);
} else if(strNum.equals("2")) {
speed--;
System.out.println("현재속도 =" + speed);
} else if(strNum.equals("3")) {
run = false;
}
}
System.out.println("프로그램 종료");
}
}
키보드 입력으로 1과 2가 입력되었을 때 속도를 증가하거나 감속하는 간단한 프로그램을 따라 만들어 봤는데 분명 그대로 따라서 만들었지만 결과가 안나왔는데 역시는 역시나 오타가 발생했던 거였다.
완성된 코드를 실행하면 내가 키보드로 입력한 숫자에 따라 스피드가 증가하고 감속되는 걸 볼수 있었는데 오랬만에 처음 코딩배우던 느낌이 났다.^^b
do-while문이란?
while문과 동일하게 조건식에 의해 반복 실행이 되지만 while문과는 다르게 처음부터 조건식에 값을 넣어 평가하지 않고 처음 한번은 무조건 실행하고 뒤에 while의 조건식으로 true, false를 평가하고 반복할지 말지를 결정한다.
위 그림처럼 do { } 안에 작성한 실행문은 최초 실행시 조건식을 거치지 않고 실행한 후 그 이후 부터 while의 조건식에 따라 평가한후 실행이될지 종료할지를 결정하는 흐름을 가지고있다. 여기서 while의 조건식 ()뒤에는 세모콜론(;) 을 붙여주어야 한다고 한다.
import java.util.Scanner;
public class DoWhileExample {
public static void main(String[] args) {
System.out.println("키보드를 입력하세요.");
System.out.println("프로그램을 종료하시려면 x를 입력하세요.");
Scanner scanner = new Scanner(System.in);
String inputString;
do {
System.out.println(">");
inputString = scanner.nextLine();
System.out.println(inputString);
} while( ! inputString.equals("x"));
System.out.println();
System.out.println("프로그램 종료");
}
}
scanner를 이용해 키보드의 입력을 받을수 있게 import 한뒤 코드를 작성했다.
do {} 안에 실행문이 최초 실행이 되면서 키보드의 입력을 받을 수 있고 키보드 입력을 받기 전까지는 조건식이 평가하지 않으므로 while 조건식에서 설정한 x를 입력하지 않는한 어떤 내용이든 적으면 출력이 되는걸 알 수 있었고 x를 입력하면
while문에서 설정한 조건식에 따라 실행이 종료되고 프로그램 종료 메세지를 출력하는 것도 확인했다.
여기까지 배우면서 느낀건 확실하게 지금까지의 모래성을 쌓아 올린것처럼 해서는 절대 안된다는 걸 깨달을 수 있었고 좀더 몰입하면서 공부를 해야한다는 것을 다시한번 깨달을 수 있었다.
지금까지 주먹구구식으로 하던 공부가 아닌 충분한 시간을 들이면서 하는 공부를 하면서 점점 차곡차곡 쌓여가는 느낌을 받을 수 있어 좀더 열정적으로 공부에 몰두 할수 있을 것 같다.
'백엔드 > JAVA' 카테고리의 다른 글
JAVA 참조 타입 (0) | 2023.03.16 |
---|---|
새로운 학원을 신청한 후... (1) | 2023.03.15 |
JAVA 조건/반복문 (0) | 2023.03.13 |
JAVA 연산자에 대해 (0) | 2023.03.09 |
JAVA 변수 (2) (0) | 2023.02.22 |
댓글