자바에서 반복문이란,,,
프로그램 수행 흐름을 바꾸는 역할을 하는 제어문 중 하나로
특정 문장들을 반복해서 수행하도록 하는 역할을 하는데요.
쉽게 설명해 순차적으로 진행되야 할 코드를
반복을 주어서 도돌이표처럼 한 코드를 반복 수행할 수 있게 합니다.
반복문에 종류는 두 가지가 있습니다.
for 와 while이 있는데요.
큰 차이는 없습니다.
조건식, 증감식, 수행될 문장 이 세 조합의 위치만 잘 설정해주면 됩니다.
EX ))
● for문
1회전 할 때 : 초기식 확인 후 조건식 확인 -> 조건식이 true면 문장 수행 -> 조건식이 false면 수행 X
2회전 할 때: 증감식 연산 후 조건식 확인 -> 조건식이 true면 문장 수행 -> 조건식이 false면 수행 X
˙
˙
˙
결과는 1 ~ 10 까지 한줄로 출력되는걸 확인 할 수 있습니다.
● 이중 for문
또 이런식으로 for문 안에 또 다른 for문을 사용할 수 있습니다.
for문에 진입하면 수행될 문장1을 먼저 수행하고
두 번째 for문에 진입하면 조건식2가 false가 될 때까지 수행,
문장2를 수행 후 나오면
수행될 문장3을 수행하고 조건식1로 돌아와 true면 다시 반복
순서는 위와 같습니다.
● while문
for문과 비슷한 반복문 while이 있는데요
- 조건식이 true일 때 문장 수행
- 문장 수행이 끝나면 조건식 다시 확인 후 true면 수행,
- 조건식이 false가 될 때까지 수행
- 조건식이 false가 되면 반복문 종료
위 순서로 진행이 됩니다.
결과는 1 ~ 10 까지 한줄로 출력되는걸 확인 할 수 있습니다.
● do ~ while문
while문과 비슷한 do ~ while 문이 있는데요.
while과 do~while의 차이점은,
do~while은 조건문이 true가 아니더라도
무조건 한 번 이상 수행을 합니다.
그리고 while 뒤에 ;(세미콜론)이 꼭 필요합니다.
진행순서는 아래와 같습니다.
- do 안의 내용 먼저 실행
- 조건식 확인 후 true면 문장 수행,
- false면 종료
● 분기문 (break, continue)
반복문안에는 분기문을 사용할 수 있습니다.
분기문을 사용해 반복문을 빠져나오거나,
반복을 하지않고 다음 반복으로 넘어가거나 등.. 할 수 있습니다.
분기문은 break, continue 두 가지가 있습니다.
EX))
● break - 반복문에서는 break조건에 해당할 경우
break문 자신이 포함된 가장 가까운 반복문을 빠져나갑니다.
예시로서 설명하자면,
i가 1씩 증가하다가 10보다 크거나 같아지는 경우,
반복문을 빠져나오는 것이죠.
● Continue
- 반복문 내에서만 사용 가능하며 반복문 실행 시,
continue 아래 부분은 실행하지 않고 반복문 다시 실행합니다.
- for문의 경우 증감식으로 이동,
while(do~while)문의 경우 조건식으로 이동합니다.
continue문은,
전체 반복 중에 특정 조건을 만족하는 경우를 제외하고자 할 때 유용합니다.
continue문 예시입니다.
i가 1부터 1씩 증가하는데,
i가 2로 나눴을 때, 나머지가 0이라면(짝수라면)
다시 반복문 상단으로 돌아갑니다.
그럼 반복문의 예제를 살펴봅시다.
반복문 예제
난이도 ★☆☆☆☆
예제 1
Q : 정수값을 입력받아 1 부터 입력받은 값까지 1씩 증가된 값을 출력하는 코드를 작성한다.
단, 1 부터 시작하는 값이 아닌 100 부터 시작하는 형태로 나오게 한다.
예)
정수 입력 : 3
100 101 102
public static void ex1() {
System.out.println("문제 1.");
System.out.print("정수 입력 : ");
int num = sc.nextInt(); sc.nextLine();
for(int i=1; i<=num; i++) {
System.out.print((i+99)+ " ");
}
System.out.println();
}
public static void main(String[] args) {
ex1();
}
난이도 ★★☆☆☆
예제 2
Q : 정수값을 입력받아 1 부터 입력받은 값까지 1씩 증가된 값을 누적하여
합을 구하는 코드를 작성한다.
예 1.)
정수 입력 : 3
누적합 : 6
예 2.)
정수 입력 : 5
누적합 : 15
예 3.)
정수 입력 : 10
누적합 : 55
public static void ex2() {
System.out.println("문제 2.");
int sum=0;
System.out.print("정수 입력 : ");
int num = sc.nextInt(); sc.nextLine();
for(int i=1; i<=num; i++) {
sum += i;
}
System.out.println("누적합 : " + sum);
}
public static void main(String[] args) {
ex2();
}
난이도 ★★★★☆
예제 3
Q : 정수값을 입력받을 때 지정된 범위의 입력값이 아닌 경우
최대 3번 다시 입력 받을 수 있도록 하는 코드를 작성한다.
(지정된 범위는 1 ~ 100 사이의 값이다.)
public static void ex3() {
int res=0;
for(int i=1; i<=3; i++) {
System.out.print("정수 입력 : ");
int num = sc.nextInt(); sc.nextLine();
if(num >= 1 && num <=100) {
//System.out.println(num);
res = num;
break;
}else if(i==3) {
System.out.println("3번의 기회를 놓쳤습니다..");
break;
}else{
System.out.println("다시 입력 (1~100사이의 값)");
}
}
if(res != 0)
System.out.println("입력한 정수의 값은 : " + res);
}
public static void main(String[] args) {
ex3();
}
난이도 ★★★☆☆
예제 4
Q : 사용자가 입력한 문자열을 기반으로 파일명이 자동으로 생성되는 프로그램을 만들려고 한다.
다음의 요구 사항을 파악하여 사용자가 원하는 기능이 동작하도록 코드를 작성하시오.
1. 임의의 파일명을 입력할 수 있어야 한다.
2. 파일은 1개를 생성할 수도 있지만 원하는 경우 2개 이상도 생성할 수 있다.
3. 만약 2개 이상의 파일을 생성하는 경우 2번째 파일 부터는 파일명 뒤에 "[2]" 접미사가 붙는다.
4. 3번 요구사항의 접미사 숫자값은 2 로 고정하는 것이 아니라 파일 수에 맞추어 1씩 증가해야 한다.
예)
파일명 입력 : newFile
생성 파일수 : 1
결과
newFile 생성 완료!
예)
파일명 입력 : newFile
생성 파일수 : 3
결과
newFile 생성 완료!
newFile[2] 생성 완료!
newFile[3] 생성 완료!
public static void ex4() {
String filename = "";
int num=0;
System.out.print("파일명 입력 : ");
filename = sc.nextLine();
System.out.print("생성 파일 수 : ");
num = sc.nextInt(); sc.nextLine();
System.out.println("결과:");
if(num <= 0) {
System.out.println("파일 수는 1개보다 작을 수 없습니다. 양수로 입력!");
System.exit(0);
}
for(int i=1; i<=num; i++) {
if(i==1) {
System.out.println("\t" + filename+ " 생성 완료!");
}else if(i>1) {
System.out.println("\t"+ filename + "[" + i + "] 생성 완료! " );
}
}
}
public static void main(String[] args) {
ex4();
}
위 문제는 배열방식으로 푸는 것이 더 깔끔합니다.
추후에 공부하겠지만, 배열 방식으로 푸는 법도 아래에 작성했습니다.
예제 4 (배열방식 풀이)
public static void ex4() {
// 배열 방식
System.out.print("파일명 입력 : ");
String filename = sc.nextLine();
System.out.print("생성 파일 수 : ");
int num = sc.nextInt(); sc.nextLine();
if(num <= 0) {
System.out.println("파일 수는 1개보다 작을 수 없습니다. 양수로 입력!");
System.exit(0);
}
System.out.println("결과:");
String[] arr = new String[num];
for(int i=0; i<num; i++) {
arr[i] = filename;
if(i==0) {
System.out.println("\t" + filename+ " 생성 완료!");
}else if(i>0) {
System.out.println("\t"+ filename + "[" + (i+1) + "] 생성 완료! " );
}
}
}
public static void main(String[] args) {
ex4();
}
이상 java의 조건문을 마치겠습니다.
다음 포스팅에선 java의 반복문(while)에 대해서 다뤄보고자 합니다.
https://healthdevelop.tistory.com/entry/java5
'Java > Java' 카테고리의 다른 글
[Java] 자바 배열의 기초 | 배열 예제 (java로 웹개발하기)(day06) (0) | 2021.07.30 |
---|---|
[Java] 자바 반복문(java for, while,do-while) | 반복문 예제 (java로 웹개발하기)(day05) (1) | 2021.07.29 |
[Java] 자바 조건문(java if, switch) | 조건문 예제 (java로 웹개발하기)(day03) (0) | 2021.07.27 |
[Java] 자바 eclipse Git 연동하기 | 자바 프로젝트 생성 (java로 웹개발하기)(day02) (0) | 2021.07.26 |
[Java] 자바 & 이클립스 설치 | 자바 프로그래밍 기초 | 자바 특징(java로 웹개발하기)(day01) (0) | 2021.07.23 |