Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 자바의 정석 기초편 ch5
- 게시글 목록 api
- 자바의 정석 기초편 ch9
- 스프링 mvc1 - 서블릿
- 코드로 시작하는 자바 첫걸음
- 자바의 정석 기초편 ch2
- 자바의 정석 기초편 ch6
- @Aspect
- 자바의 정석 기초편 ch13
- 스프링 mvc2 - 검증
- 2024 정보처리기사 시나공 필기
- 자바의 정석 기초편 ch8
- 스프링 고급 - 스프링 aop
- 스프링 mvc2 - 로그인 처리
- 스프링 mvc1 - 스프링 mvc
- 자바 기본편 - 다형성
- 스프링 db1 - 스프링과 문제 해결
- 2024 정보처리기사 수제비 실기
- 스프링 mvc2 - 타임리프
- jpa - 객체지향 쿼리 언어
- 자바의 정석 기초편 ch14
- 자바의 정석 기초편 ch11
- jpa 활용2 - api 개발 고급
- 자바의 정석 기초편 ch12
- 스프링 입문(무료)
- 스프링 db2 - 데이터 접근 기술
- 자바의 정석 기초편 ch1
- 자바의 정석 기초편 ch3
- 자바의 정석 기초편 ch7
- 자바의 정석 기초편 ch4
Archives
- Today
- Total
나구리의 개발공부기록
자바의 정석 기초편 ch4 - 16 ~ 19 [while문, do-while문] 본문
1) while문
- 조건을 만족시키는 동안 { }을 반복 - 반복 횟수를 모를 때 사용
- while문과 for문은 서로 변경 가능 (원조는 while문)
- 0 ~ n번 반복
while (조건식) {
// 조건식의 연산결과가 참(true)인 동안 반복할 문장을 작성
// 조건식의 연산결과가 처음부터 false인 경우 작동하지 않음
}
(1) for문 같은 while문
public class ex4_12 {
public static void main(String[] args) {
int i = 5; // 반복 횟수 작성
while(i-- != 0) { // 조건문 작성
System.out.println(i + " - I can do it. ");
}
}
}
(2) 예제1
- i를 몇까지 누적 합산해야 sum이 100을 넘는지 출력하도록 while문을 활용하여 작성
public class ex4_13 {
public static void main(String[] args) {
// i를 몇까지 더해야 sum이 조건을 넘는지 알기위한 코드
int sum = 0;
int i = 0;
while(sum <= 100) { // 조건문 작성
System.out.println("i = "+i+" / "+"sum = "+sum); // 출력될 문장 작성
sum += ++i; // i를 1씩 증가시켜서 sum에 계속 더하도록 설정
}
}
}
i = 0 / sum = 0
i = 1 / sum = 1
i = 2 / sum = 3
i = 3 / sum = 6
i = 4 / sum = 10
i = 5 / sum = 15
i = 6 / sum = 21
i = 7 / sum = 28
i = 8 / sum = 36
i = 9 / sum = 45
i = 10 / sum = 55
i = 11 / sum = 66
i = 12 / sum = 78
i = 13 / sum = 91
(2) 예제2
- 입력받은 값의 각 자리수를 더하는 로직을 while문으로 구현
import java.util.*;
public class ex4_14_1 {
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) {
// num을 10으로 나눈 나머지를 sum에 더함
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);
}
}
(3) for문을 while문으로 변환
- 로직은 위의 예제와 동일한 num의 자리수를 합하는 로직
import java.util.*;
public class ex4_14_1 {
public static void main(String[] args) {
// 사용자가 입력한 값의 각 자리의 합을 구하는 코드
int num = 12345, sum = 0;
// System.out.println(12345%10); // 마지막 자리를 얻는 식(10으로 나머지 연산)
// for 문으로 코드작성
for(; num>0; num = num / 10) { // num = 12345, 1234, 123, 12, 1
sum += num % 10;
System.out.println("sum="+sum +",num="+num%10);
}
while(num>0) { // 위 코드를 while문으로 변환
sum += num % 10;
System.out.println("sum="+sum +",num="+num%10);
num = num / 10;
}
System.out.println("각 자리수의 합:"+sum);
}
}
sum=5,num=5
sum=9,num=4
sum=12,num=3
sum=14,num=2
sum=15,num=1
각 자리수의 합:15
(4) while문의 무한 반복문
- 조건식에 true라고 하면 무한반복됨
- break; 로 빠져나와야 함
while (true) { // true생략 불가
//수행 될 문장
}
2) do - while문
- 블럭 { }을 최소한 한번 이상 반복
- 사용자 입력을 받을 때 유용
- while문으로도 가능하지만 do-while문이 코드가 가독성이 좋음
- 1 ~ n번 반복 - 최소 1번은 꼭 실행 됨
do {
// 조건식의 연산결과가 참(true)인 동안 반복할 문장을 작성 - 처음 1번은 무조건 실행
} while (조건식); // 끝에 ';' 을 빠트리지 않도록 유의
(1) 예제
import java.util.*;
public class ex4_15 {
public static void main(String[] args) {
// 1 ~ 100사이의 랜덤값을 사용자가 반복 입력하여 맞추는 코드
int input = 0, answer = 0;
answer = (int)(Math.random() * 100) + 1; // 1 ~ 100 사이의 임의의 수 생성
// System.out.println("answer ="+answer); // 정답을 미리 알기위한 코드
Scanner scanner = new Scanner(System.in);
do {
System.out.println("1과 100사이의 정수를 입력하세요.>");
input = scanner.nextInt(); // 화면을 통해 입력받은 내용을 input에 정수로 저장
if(input > answer) {
System.out.println("더 작은 수로 다시 시도해보세요.");
} else if(input < answer) {
System.out.println("더 큰 수로 다시 시도해보세요.");
}
} while(input != answer);
System.out.println("정답입니다!");
}
}
(2) 위 예제를 while문으로 변경 하면?
- while문으로 먼저 작성해보고 코드 중복이 발생하면 do-while문으로 변경 해보는 것을 추천
import java.util.*;
public class ex4_15_while {
public static void main(String[] args) {
// 1 ~ 100사이의 랜덤값을 사용자가 반복 입력하여 맞추는 코드
int input = 0, answer = 0;
answer = (int)(Math.random() * 100) + 1; // 1 ~ 100 사이의 임의의 수 생성
System.out.println("answer ="+answer); // 정답을 미리 알기위한 코드
Scanner scanner = new Scanner(System.in);
System.out.println("1과 100사이의 정수를 입력하세요.>");
input = scanner.nextInt(); // 화면을 통해 입력받은 내용을 input에 정수로 저장
while(input != answer) {
if(input > answer) {
System.out.println("더 작은 수로 다시 시도해보세요.");
} else if(input < answer) {
System.out.println("더 큰 수로 다시 시도해보세요.");
}
System.out.println("1과 100사이의 정수를 입력하세요.>");
input = scanner.nextInt(); // 입력 받는 코드가 중복이 발생 - 불필요한 작업이 생김
}
System.out.println("정답입니다!");
}
}
** 출처 : 남궁성의 정석코딩_자바의정석_기초편 유튜브 강의
'유튜브 공부 > JAVA의 정석 기초편(유튜브)' 카테고리의 다른 글
자바의 정석 기초편 ch5 - 1 ~ 5 [배열, 배열의 인덱스,배열의길이,배열의초기화] (0) | 2023.11.08 |
---|---|
자바의 정석 기초편 ch4 - 20 ~ 24 [break문, continue문, 이름붙은 반복문] (0) | 2023.11.08 |
자바의 정석 기초편 ch4 - 13 ~ 15 [for문, 중첩for문] (0) | 2023.11.07 |
자바의 정석 기초편 ch4 - 9 ~ 12[switch문, 임의의 정수 만들기] (1) | 2023.11.06 |
자바의 정석 기초편 ch4 - 1 ~ 8[조건문과 반복문, If문,if-else문,if-esle if문, 중첩if문] (0) | 2023.11.06 |