[JAVA] 반복문 (for, while, do-while, break, continue)과 랜덤(룰렛)

반복문 (for 문)

for (초기화식; 조건식; 증감식){

 

수행문;

 

}

// i 변수 활용해서 증감 시키고 조건을 판단 합니다.

// 맨 처음 i 값 = 1로 시작했다.

// i = 1, i = 2, i = 3, i = 4, ... i = 11이 되는 순간 조건식에 결과값은 false가 나온다.

for (int i = 1; i < 11; i++) {

// 수행이 된다.

// ...

} // end of for

for문을 이용한 예제를 풀어보자

구구단 2단

for (int i = 1; i < 10; i++) {

System.out.println(num + " * " + i + " = " + (num * i));

}

결과

2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18

1부터 10까지 더하기

int num = 0;

for (int i = 1; i < 11; i++) {

num += i; // 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

}

System.out.println("결과 : " + num);

결과 : 55

2부터 9까지의 숫자를 입력받아 입력받은 숫자로 구구단 만들기

(2보다 작거나 9보다 크면 잘못 입력 했습니다 출력)

Scanner sc = new Scanner(System.in);

System.out.println("화면에 원하는 단을 입력하세요 : ");

int score = sc.nextInt();

 

if( (score < 2) || (score > 9) ) {

System.out.println("잘못 입력했습니다.");

}

else {

for (int i = 1; i < 10; i++) {

System.out.println(score + " * " + i + " = " + (score * i));

}

}

5를 입력한 경우

결과

화면에 원하는 단을 입력하세요 :

5

5 * 1 = 5

5 * 2 = 10

5 * 3 = 15

5 * 4 = 20

5 * 5 = 25

5 * 6 = 30

5 * 7 = 35

5 * 8 = 40

5 * 9 = 45

10을 입력한 경우

결과

화면에 원하는 단을 입력하세요 :

10

잘못 입력했습니다.

for문 응용(2중 for문)

입력받은 값 부터 9*9 까지 실행

Scanner scc = new Scanner(System.in);

System.out.println("화면에 원하는 단을 입력하세요 : ");

int score1 = scc.nextInt();

 

if ((score1 < 2) || (score1 > 9)) {

System.out.println("잘못 입력했습니다.");

} else {

 

for (int j = 1; j < 10; j++) {

System.out.println(score1 + " * " + j + " = " + (score1 * j));

}

for (int k = score1; score1 < 10; score1++) {

for (int i = 1;i<10; i++){

System.out.println(score1 + " * " + i + " = " + (score1 * i));

}

}

}

결과

화면에 원하는 단을 입력하세요 :

8

8 * 1 = 8

8 * 2 = 16

8 * 3 = 24

8 * 4 = 32

8 * 5 = 40

8 * 6 = 48

8 * 7 = 56

8 * 8 = 64

8 * 9 = 72

8 * 1 = 8

8 * 2 = 16

8 * 3 = 24

8 * 4 = 32

8 * 5 = 40

8 * 6 = 48

8 * 7 = 56

8 * 8 = 64

8 * 9 = 72

9 * 1 = 9

9 * 2 = 18

9 * 3 = 27

9 * 4 = 36

9 * 5 = 45

9 * 6 = 54

9 * 7 = 63

9 * 8 = 72

9 * 9 = 81

for문 응용2

(구구단 역순 출력)

num = 6;

for (int i = 9; i > 0; i--) {

int s = i;

s += 2 ;

System.out.print((num * i ) + " / " + num + " = " + i );

System.out.println(" " +s);

 

}

결과

54 / 6 = 9 11

48 / 6 = 8 10

42 / 6 = 7 9

36 / 6 = 6 8

30 / 6 = 5 7

24 / 6 = 4 6

18 / 6 = 3 5

12 / 6 = 2 4

6 / 6 = 1 3

while문

시작값과 종료값을 입력받아 시작값부터 종료값까지의 합을 구하기

(시작값 4 종료값 6)

//사용자가 입력한 숫자 start 값 받아주세요

//사용자가 입력한 숫자 end 값 받아주세요

// 결과를 출력하는 프로그램 만들어 주세요

Scanner sc = new Scanner(System.in);

System.out.println("start : ");

int a = sc.nextInt();

System.out.println("end : ");

int b = sc.nextInt();

 

int num = 100;

int sum = 0;

int end = 501;

 

while(a <= b) {

sum +=a;

//반드시 종료되는 조건 식을 추가 해서 무한 반복을 조심하자

a++;

}

System.out.println("합산의 결과 값은 : " + sum + " 입니다");

결과

start :

4

end :

6

합산의 결과 값은 : 15 입니다

while문 응용

0입력 1입력 

Scanner sc = new Scanner(System.in);

// 1을 입력하면 화면에 '반가워' 출력

// 0을 입력하면 화면에 '종료' 출력

int input = -1;

 

while(input != 0) { // input 값이 0이 아니라면 true 결과가 나온다

System.out.println("1. 저장 2. 수정 3. 삭제 4. 조회 0.종료");

input = sc.nextInt();

if(input == 1) {

System.out.println("저장을 선택 하셨습니다");

}

else if(input == 2) {

System.out.println("수정을 선택 하셨습니다");

}

else if(input == 3) {

System.out.println("삭제를 선택 하셨습니다");

}

else if(input == 4) {

System.out.println("조회를 선택 하셨습니다");

}

}

 

System.out.println("종료");

결과

1. 저장 2. 수정 3. 삭제 4. 조회 0.종료

1

저장을 선택 하셨습니다

1. 저장 2. 수정 3. 삭제 4. 조회 0.종료

0

종료

do while

● 조건과 상관 없이 한번은 수행문을 수행

● while문은 조건을 먼저 체크하고 반복 수행이 된다면, do-while은 조건과 상관 없이 수행을 한 번 하고나서 조건을 체크

do {

//한번은 반드시 수행되는 구문

} while (조건식);

break

조건문을 빠져나오는 함수

● 감싸고 있는 제어문의 블록을 빠져 나오는 기능

● 반복문에서는 주로 조건문(if)와 같이 사용하여 조건에 해당되는 경우 반복 수행을 멈추고 반복문 외부로 수행이 이동

● 여러 반복문이 중첩되어 있는 경우엔 break 문이 포함되어 있는 반복문만 빠져 나옴

for(int i = 1; i <= 10; i++) {

// 만약 i 값이 소수 7 이라면 멈추어라

if(i % 7 == 0) {

//수행

break; //반복문 하나를 멈춤

}

System.out.println(" i : " + i);

결과

i : 1

i : 2

i : 3

i : 4

i : 5

i : 6

continue

● 반복문 내부에서 조건문(if)와 같이 사용하며, 조건이 맞는 경우(true 이면) 이후 반복문 블럭 내부의 다른 수행문들을 수행하지 않음

1에서 10까지의 정수 중에서 3의 배수를 빼고 출력하고

3의 배수의 개수와 3의 배수의 합을 구하라

int i;

int cnt = 0, sum =0;

for( i = 1; i <= 10; i++) {

 

if( i % 3 == 0) {

sum += i;

cnt++;

continue;

}// end of if

System.out.println(" i : " + i);

}// end of for

System.out.println("3의 배수의 개수는 " + cnt + " 개 입니다");

System.out.println("3의 배수의 합은 " + sum + " 입니다");

결과

i : 1

i : 2

i : 4

i : 5

i : 7

i : 8

i : 10

3의 배수의 개수는 3 개 입니다

3의 배수의 합은 18 입니다

for문과 if문 동시 사용

(5를 입력한 경우)

Scanner sc = new Scanner(System.in);

 

// 1 부터 10까지 화면에 결과를 출력 하시오

// 만약 3의 배수라면 화면에 값을 출력하지 마시오

int i;

int count = 0;

System.out.println("입력");

final int A = sc.nextInt();

int start = 1;

int end = 1000;

for( i = start; i <= end; i++) {

 

if( i % A == 0) {

count = count +1;

continue;

}// end of if

//System.out.println(" i : " + i);

}// end of for

System.out.println(A+" 의 배수의 개수는 " + count + " 개 입니다");

결과

입력

5

5 의 배수의 개수는 200 개 입니다

random함수

Random random = new Random();

int resultRandom = random.nextInt(45); // 난수(랜덤 정수 값을 하나 변환해준다)

//(45) 괄호 안에 숫자를 넣으면 0 부터 44까지 중에 랜덤 숫자를 하나 만들어 준다.

System.out.println(resultRandom);

룰렛 만들기

기회는 3번

내가 입력한 값과 랜덤함수에서 나온 값이 맞으면 성공

(성공하면 바로 종료)

Random random = new Random();

int resultRandom = random.nextInt(5) + 1;

int i=0, s=3;

while(i<3) {

i++;

s--;

System.out.print("숫자를 입력하세요: ");

Scanner sc = new Scanner(System.in);

int x = sc.nextInt();

 

if (resultRandom == x) {

System.out.println("랜덤 숫자는 : " + resultRandom);

System.out.println("성공");

break;

}

else {

System.out.println("랜덤 숫자는 : " + resultRandom);

System.out.println("실패");

System.out.println("남은횟수 : " + s);

}

if(s==0) {

System.out.println("다음 기회에");

}

}

한번만에 맞춘 경우

결과

숫자를 입력하세요: 5

랜덤 숫자는 : 5

성공

세번 다 틀린 경우

결과

숫자를 입력하세요: 5

랜덤 숫자는 : 1

실패

남은횟수 : 2

숫자를 입력하세요: 5

랜덤 숫자는 : 1

실패

남은횟수 : 1

숫자를 입력하세요: 5

랜덤 숫자는 : 1

실패

남은횟수 : 0

다음 기회에

오늘의 문제

출력 결과를 작성하시오

1번 

int sum = 0;

for (int i = 1; i < 3; i++) {

sum += i;

}

System.out.println(sum);

 

정답

 

2번

sum = 0;

for (int i = 1; i < 3; ++i) {

sum += i;

}

System.out.println(sum);

 

정답

 

3번

sum = 0;

for (int i = 0; i < 10; i++) {

sum += i;

}

System.out.println(sum);

 

정답

 

4번

sum = 0;

for (int i = 0; i < 10; i++) {

sum *= i;

}

System.out.println(sum);

 

정답

 

5번

sum = 0;

for (int i = 0; i < 10; i++) {

if (i % 2 == 0)

sum += i;

}

System.out.println(sum);

 

정답

 

6번

sum = 0;

for (int i = 0; i < 11; i++) {

if (i % 2 == 0) {

sum += i;

System.out.print(i);

}

else {

System.out.print(" + ");

}

}

System.out.println(" = " +sum);

 

정답

더보기

0 + 2 + 4 + 6 + 8 + 10 = 30

 

7번

int x = 1;

do {

++x;

System.out.println(x);

}while( x == 2);

System.out.println(x);

 

정답

더보기

2

3

3

 

8번

x = 1;

do {

x++;

System.out.println(x);

}while( x == 2);

System.out.println(x);

 

정답

더보기

2

3

3

 

9번

x = 1;

do {

System.out.println(x++);

}while( x == 2);

System.out.println(x);

 

정답

더보기

1

2

3

 

10

x = 1;

do {

System.out.println(++x);

}while( x == 2);

System.out.println(x);

 

정답

더보기

2

3

3

 

주의할 점

● for문에서는 ++i(전위증가), i++(후위증가) 모두 반복문이 실행되고 나서 값이 변함

● while 문을 사용할 때 무한반복이 일어나지 않도록 조건을 설정해야 한다

break는 반복문 하나만 빠져나간다 (이중 반복문이면 하나만)