티스토리 뷰
#반복문 – while문
while문은 조건식이 거짓이 될 때까지 블럭{} 내의 문장을 반복한다.
whille문의 구조)
while (조건식) {
//조건식의 연산결과가 참인 동안 반복된다.
}
while문은 먼저 조건식을 평가해서 조건식이 거짓이면 문장 전체를 벗어나고, 참이면 블럭{} 내의 문장을 수행하고 다시 조건식으로 돌아간다. 조건식이 거짓이 될 때까지 이 과정이 계속 반복된다.
for문과 while문의 비교)
* 1부터 10까지의 정수를 순서대로 출력하는 for문을 while문으로 변경
1.for문
for(int = i=1; i<=10; i++){
System.out.println(i);
}
2.while문
int I = 1; //초기화
while(i<=10) {//조건식
System.out.println(i);
I++; //증감식
}
위의 두 코드는 완전히 동일하다. for문은 괄호() 안에 초기화, 조건식, 증감식을 한 곳에 모아 놓은 것일 뿐 while문과 다르지 않다. 그래서 for문과 while문은 항상 서로 변환이 가능하다.
while문 예제1)
public class Ex4_12 {
public static void main(String[] args) {
int i =5;//반복할 횟수
while(i !=0) {//i--!=0;
i--;//분리
System.out.println(i + "- I can do it.");
}
}
}
위의 예제는 변수 i의 값만큼 블럭{}을 반복하는 것으로 i의 값이 5이므로 모두 5번 출력된다.
while문의 조건식 'i--!=0'는 0이 아닌 동안만 참이 되고, i의 값이 매 반복마다 1씩 감소한다는 뜻으로, 0이 되면 조건식이 거짓이 되어 while문을 벗어나게 된다.
* i--는 후위형이므로 조건식이 평가된 후에 i 값이 감소된다는 점을 주의해야 한다.
위의 코드가 4~0으로 출력되는 것도, i가 후위형이어서 조건식 평가한 후에 i값이 1 감소되었기 때문이다.
while문 예제 2)
import java.util.Scanner;
public class Ex4_14 {
public static void main(String[] args) {
int num = 0, sum =0;
System.out.print("숫자를 입력하세요.(예 : 12345)> " );
Scanner scanner = new Scanner(System.in);
String tmp = scanner.nextLine();//tmp값을 저장
num = Integer.parseInt(tmp);//문자열 tmp를 정수로 변환
while(num != 0) {
sum += num%10; // sum = sum + num%10;
System.out.printf("sum = %3d num=%d%n", sum, num);
num /= 10; //num = num/10; num을 10으로 나눈 값을 다시 num에 저장
}
System.out.println("각자리 수의 합 : " + sum);
}
}
위의 예제는 사용자로부터 숫자를 입력받고, 숫자의 각 자리의 합을 구하는 것이다. (ex 12345 -> 1+2+3+4+5 =15)
while문을 살펴보면 num은 어떤 수를 10으로 나누어 0이 될 때까지 반복된 수를 저장하는 변수이고, num에서 나온 각 자리의 수를 더하는 변수는 sum이다.
#반복문 – do-while문
while문의 조건식과 블럭{}의 순서를 바꿔 변형한 것이 do-while문이라고 한다.
while문은 조건식이 거짓이면 0~n번 수행되지만 do-while문에 같은 경우 최소 한 번은 수행돼야 하기 때문에 1~n번 수행된다.
구조)
do {
//조건식이 참일 때 수행될 문장(처음 한번 무조건 실행)
} while (조건식); //세미콜론 필수! 잊지 말자
do-while문 예제)
import java.util.Scanner;
public class Ex4_15 {
public static void main(String[] args) {
int input = 0, answer = 0;
answer = (int)(Math.random()*100) +1; //1~100 사이의 난수 저장
Scanner scanner = new Scanner(System.in);
do {
System.out.print("1과 100사이의 정수를 입력하세요.>");
input = scanner.nextInt();
if(input > answer) {
System.out.println("더 작은 수로 다시 시도해보세요.");
}else if(input < answer){
System.out.println("더 큰 수로 다시 시도해보세요.");
}
} while(input != answer);
System.out.println("정답입니다.");
}
}
위의 예제는 사용자의 입력을 받아서 1~100 사이의 난수를 맞추는 예제이다.
Math.random() 메서드를 사용하여 1과 100 사이의 변수를 answer에 저장하고, 이 값을 맞출 때까지 do-while문이 반복된다.
'개발 공부 > JAVA' 카테고리의 다른 글
[Java] 배열 선언과 생성, 인덱스, 길이, 초기화, 출력 (0) | 2022.01.07 |
---|---|
[Java] break문, continue문 (0) | 2021.12.17 |
[Java] 제어문 - 반복문(for문) (0) | 2021.12.01 |
[Java] 제어문 - 조건문(switch문) (0) | 2021.12.01 |
[Java] 제어문 - 조건문(if문) (0) | 2021.11.29 |
- Total
- Today
- Yesterday
- 호출스택
- 프로글개머스 `
- java의정석 기초
- MySQL
- JAVA 의 정석
- Java
- 객체 배열
- 객체지향
- 기본 생성자
- 2차배열 예제
- 객체지향 언어
- do-while문
- 메서드 간의 호출과 참조
- Lv.0
- 기본형/참조형 매개변수
- 클래스와 객체
- 객체의 구성요소
- string 배열
- JAVA의 정석
- SQL
- 코테
- 조건문 if
- 자바의 정석
- return문
- 생활코딩
- 두 수의 나눗셈
- 프로그래머스
- java의 정석기초
- 인스턴스 메서드
- 매개변수가 있는 생성자
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |