1. while 문
package p03.while_basic;
// 1. while, do~while, for: 특정 명령어 집합을 반복적으로 수행하고자 할 때 사용하는 command
// 예) 수능 50만명 성적처리
// 2. while (boolean) { A; } => boolean이 true인 동안에 A 명령어를 반복 수행
// - 초기값과 while문 조건식을 꼼꼼히 살펴볼 필요 있음
public class WhileBasic {
public static void main(String[] args) {
// System.out.println("Java씨, 존경합니다.");
// System.out.println("Java씨, 존경합니다.");
// System.out.println("Java씨, 존경합니다.");
// System.out.println("Java씨, 존경합니다.");
// System.out.println("Java씨, 존경합니다.");
// 반복문 초기화
int count = 0;
// 조건식 : count < 10;
while (count < 10) {
System.out.println("Java씨, 존경합니다.");
count++; //while문 조건식 결과를 false로 만들어 줄 수 있음
}
System.out.println();
count = 1;
while ( count <= 10); {
System.out.println("Java씨, 존경합니다.");
count++;
}
System.out.println();
int endValue = 10;
while (count <= endValue); {
System.out.println("Java씨, 존경합니다.");
count++;
}
}
}
- while 문의 경우 조건에 따라 반복을 계속할지 결정할 때 사용한다.
- int count가 0이라는 값을 가지고 while ( count < 10) 이라는 조건이므로 조건은 true가 되어 10번 반복하게 된다.
2. while 문 2 (1에서 10까지의 합 구하기)
package p03.while_basic;
public class WhileBasic2 {
public static void main(String[] args) {
int sum = 0;
int number = 1;
while (number <= 10) {
sum += number; // sum = sum + number; => sum = 0 + 1 + 2 + 3 + ... + 10
number++;
}
System.out.println("1 ~ 10까지의 합 = " + sum);
}
}
- 먼저 sum, number라는 변수에 0과 1이라는 값을 넣어준다.
- while 문을 사용하여 number가 10이 될때까지 반복해주는 조건을 만들어준다.
- 그 다음 sum += number를 해서 1부터 2,3,4....10까지의 값들을 더해준다.
- (참고로, sum += number라는 뜻은 sum = sum + number와 같은 뜻이다.)
3. while 문 3 (짝수의 합과 홀수의 합 구하기)
package p03.while_basic;
public class WhileBasic3 {
public static void main(String[] args) {
int sum = 0;
int number = 1;
// 1 ~ 10사이의 짝수의 합 (2+4+6+8+10)
while (number <= 10) {
if ( (number % 2) == 0) {
sum += number;
System.out.println("sum = " +sum);
}
number++;
}
System.out.println("1~10사이의 짝수의 합 :" + sum);
number = 1;
sum = 0;
while (number <= 10) {
if ( (number % 2) == 1) {
sum += number;
}
number++;
}
System.out.println("1~10사이의 홀수의 합 : " +sum);
}
}
- 여기서도 먼저 sum, number라는 변수에 0과 1이라는 값을 넣어준다.
- 그 다음 while 문을 이용하여 우리가 구하고 싶은 1에서 10까지라는 것을 반복해야하니 while (number <=10)이라는 조건식을 만들어준다.
- 여기서 짝수의 합만 구하고 싶으니 if 문을 사용해준다.
- if 문에는 number를 %2를 해준다. %는 나머지를 구하는 연산자이기 때문에 여기서 %2를 해서 0이 나오면 짝수라는 뜻이다.
- 그 다음은 sum += number를 해주면 1에서 10까지 짝수의 합이 나오게 된다.
- (System.out.println("sum = " + sum); 은 sum이 어떻게 증가하는지 보기위해서 사용하였다.)
- 홀수는 위에 했던거를 똑같이 하되, if 문에서 %2를 해서 1이 나오면 홀수라는 뜻이기에 if ((number%2) == 1)를 해준다.
4. while 문 QUIZ ( 0 ~ 9 사이의 random의 숫자를 받아 덧셈결과를 입력하시오.)
package p03.while_practice;
import java.util.Scanner;
// 0~9사이의 2개의 random number 숫자를 생성하여 합계(덧셈 결과)를 만든 후
// 사용자로부터 console에서 덧셈 결과를 입력받아 내부적으로 생성한 덧셈결과와 일치할 때까지 while 수행
public class RepeatAdditionQuiz {
public static void main(String[] args) {
int number1 = (int) (Math.random()*10);
int number2 = (int) (Math.random()*10);
Scanner input = new Scanner(System.in);
System.out.println(number1 + "과" + number2 + "의 합계는?");
int answer = input.nextInt();
// while 내부 수행 조건 : 정답이 틀릴 경우에만 while문이 반복 수행
while ( (number1 +number2) != answer) {
System.out.println("정답이 아닙니다. 다시 시도해 보세요.");
System.out.println(number1 + "과" + number2 + "의 합계는");
answer = input.nextInt();
}
System.out.println("예, 정답입니다. 잘 맞추셨습니다.");
}
}
- 먼저 random의 숫자를 받아야하므로 Math.random을 사용해준다.
- 우리가 직접 답을 입력해줘야하니 Scanner도 사용해준다.
- 그 다음 답이 맞으면 끝나고 답이 틀리면 맞출때까지 반복해야 하므로 while 문을 이용해준다.
- whlie 문의 조건식은 random으로 숫자를 받는 number1과 number2의 합이 우리가 입력한 숫자와 일치하지 않을때가 true가 되도록 만들어준다.
- 즉, while ( (number1 + number2) != answer) 이라는 식으로 만들어주면 된다. 여기서 !=은 not이라는 뜻이기 때문에 쓰는 것이다.
- 이렇게 만들어주면 우리가 입력한 값(answer)가 number1과 number2의 합이랑 같지 않을 때 true가 되고 "정답이 아닙니다. 다시 시도해 주세요"라는 문구와 다시 답을 입력할 수 있도록 나온다.
5. do ~ while 문
package p04.dowhile_basic;
// do ~ while : do ~ while문 내부 명령어를 무조건 1번은 실행
// - do { A; } while(조건식) => 조건식이 true인 동안에 A를 반복 실행
// - 참고 : while문은 내부 명령어는 한번도 실행 안할수도 있음
public class DoWhileBasic {
public static void main(String[] args) {
int count = 0;
do {
System.out.println("Java씨, 존경합니다.");
count++;
} while (count < 10);
count = 0;
do {
System.out.println("Java씨, 매우매우 존경합니다.");
} while (count > 10);
while (count > 10) {
System.out.println("Java씨, 너무너무 존경합니다.");
count++;
}
}
}
- do ~ while 문의 경우는 while문과 비슷하지만 먼저 do를 써준다.
- do 안에는 실행문을 넣어주고 그 다음 while 문을 써서 while문의 조건문이 true이면 do 안에 있는 실행문이 실행되게 된다.
- 위에 코딩도 do 안에 있는 "Java씨, 존경합니다."라는 실행문이 10번 반복하고, 11번째는 "Java씨, 매우매우 존경합니다."라는 실행문이 실행되게 된다.
6. do ~ while 문 2
package p04.dowhile_basic;
import java.util.Scanner;
// do ~ while문을 사용하는데 대표적인 case : 자판기처럼 메뉴판을 보여주고 외부에서 선택하고 종료하는 경우를 조건식에 두는 경우
public class DoWhileBasic2 {
public static void main(String[] args) {
int sum = 0;
int input_number;
Scanner input = new Scanner(System.in);
do {
System.out.println("덧셈할 숫자를 입력하세요. 단, 입력한 숫자가 0이면 종료합니다.");
input_number =input.nextInt();
sum += input_number;
}while (input_number != 0);
System.out.println("sum = " + sum);
// System.out.println("덧셈할 숫자를 입력하세요. 단, 입력한 숫자가 0이면 종료합니다.");
// input_number =input.nextInt();
// while (input_number != 0) {
// sum += input_number;
// System.out.println("덧셈할 숫자를 입력하세요. 단, 입력한 숫자가 0이면 종료합니다.");
// input_number =input.nextInt();
// }
//
// System.out.println("sum = " + sum);
}
}
- 이번 코딩은 숫자를 입력하고 enter 키를 누르면 다시 숫자를 입력할 수 있게 되고, 0을 누르면 그동안 입력했던 숫자들이 모두 더해지고 종료되는 코딩이다.
- 우리가 숫자를 입력해야하니 Scanner를 사용해준다.
- 그리고 do ~ while 문을 써서 실행될 문장을 만들어준다.
- do에는 실행문을 넣어주고, while 문에는 조건식이 0이 되면 프로그램이 종료되니까 입력된 숫자 != 0이 라는 식을 만들어 0이 아니면 계속 반복할 수 있게 만들어준다.
7. do ~ while 문 3
package p04.dowhile_basic;
public class DoWhileBasic3 {
public static void main(String[] args) {
char a = 'a';
do {
System.out.print(a);
a = (char) (a + 1);
} while (a <= 'z');
System.out.println();
a = 'A';
do {
System.out.print(a);
a = (char) (a + 1);
} while (a <= 'Z');
}
}
- 이번 코딩은 a부터 z까지 알파벳을 소문자와 대문자로 나열하는 코딩이다.
- 먼저 char a라는 변수에 a를 할당해주고 do ~ while 문을 사용해준다.
- do에는 a부터 계속 한글자씩 높아지는 실행문을 써주고, while에는 a가 z보다 이하일때 true라는 식을 만들어준다. 그러면 a는 z까 될때까지 반복할 것이다.
- 대문자는 a = 'A'라고 해주고 위에 코딩과 같게 해주면 된다.
8. do ~ while 문 QUIZ ( 0 ~ 9 사이의 random의 숫자를 받아 덧셈결과를 입력하시오.)
package p04.dowhile_practice;
import java.util.Scanner;
public class RepeatAdditionQuiz {
public static void main(String[] args) {
int number1 = (int) (Math.random()*10);
int number2 = (int) (Math.random()*10);
Scanner input = new Scanner(System.in);
int answer = Integer.MAX_VALUE; // 정수 최대값 초기화
do {
System.out.println(number1 + "과" + number2 + "의 합계는");
answer = input.nextInt();
if ( (number1 + number2) != answer) {
System.out.println("정답이 아닙니다. 다시 시도해 보세요.");
}
} while ( (number1 + number2) != answer);
System.out.println("정답입니다. 잘 맞추셨습니다.");
}
}
- 이 문제는 위에 while 문을 써서 0 ~ 9 사이의 random 의 숫자를 받아 정답을 입력하는 문제였다
- 이 문제를 do ~ while문을 써서 푼 코딩이 위에 코딩이다.
오늘은 조건문과 반복문 실습에서 while, do ~ while 문에 대한 실습을 해보았습니다. 다음에는 반복문인 for 문에 대한 실습을 해보도록 하겠습니다.
반응형