<반복문 for>
정확히 반복하는 횟수가 정해져 있을 때 for문을 사용함.
간단한 반복문을 작성할 때 이용함.
<연습문제>
// 문제 : for문을 이용해 모든 단의 1을 곱하는 식을 출력하시오
// 풀이 :
for (int i=2; i<10; i++) {
System.out.println(i+ "x" + 1 + "=" + (i*1));
}
// 답 :
2x1=2
3x1=3
4x1=4
5x1=5
6x1=6
7x1=7
8x1=8
9x1=9
// 문제 : for문을 이용해 짝수단의 1을 곱하는 식을 출력하시오
// 풀이 :
for (int i=2; i<10; i+=2) {
System.out.println(i+ "x" + 1 + "=" + (i*1));
}
// 답 :
2x1=2
4x1=4
6x1=6
8x1=8
// 문제 : for문을 이용해 2단부터 9단까지 구구단을 출력하시오
// 풀이 :
for (int i=2; i<10; i++) {
System.out.println(i+"단");
for (int j=1; j<10; j++)
System.out.println(i + "x" + j + "=" + (i*j));
}
// 답 :
2x1=2
2x2=4
2x3=6
2x4=8
2x5=10
2x6=12
2x7=14
2x8=16
2x9=18
3x1=3
3x2=6
3x3=9
.
.
.
// 문제 : for문을 이용해 짝수단 구구단만 출력하시오
// 풀이 :
for (int i=2; i<10; i+=2) {
System.out.println(i+"단");
for (int j=1; j<10; j++)
System.out.println(i+ "x" + j + "=" + (i*j));
}
// 답 :
2단
2x1=2
2x2=4
2x3=6
2x4=8
2x5=10
2x6=12
2x7=14
2x8=16
2x9=18
4단
4x1=4
4x2=8
4x3=12
4x4=16
4x5=20
4x6=24
4x7=28
4x8=32
4x9=36
6단
6x1=6
6x2=12
6x3=18
6x4=24
6x5=30
6x6=36
6x7=42
6x8=48
6x9=54
8단
8x1=8
8x2=16
8x3=24
8x4=32
8x5=40
8x6=48
8x7=56
8x8=64
8x9=72
// 문제 : for문을 이용해 홀수단 구구단만 출력하시오
// 풀이 :
for (int i=3; i<10; i+=2) {
System.out.println(i+"단");
for (int j=1; j<10; j++)
System.out.println(i+ "x" + j + "=" + (i*j));
}
// 답 :
3단
3x1=3
3x2=6
3x3=9
3x4=12
3x5=15
3x6=18
3x7=21
3x8=24
3x9=27
5단
5x1=5
5x2=10
5x3=15
5x4=20
5x5=25
5x6=30
5x7=35
5x8=40
5x9=45
7단
7x1=7
7x2=14
7x3=21
7x4=28
7x5=35
7x6=42
7x7=49
7x8=56
7x9=63
9단
9x1=9
9x2=18
9x3=27
9x4=36
9x5=45
9x6=54
9x7=63
9x8=72
9x9=81
// 문제 : for문을 이용해 구구단에서 한단이 끝나면 행을 바꾸시오
// 풀이 :
for (int i=2; i<10; i++) { // i변수를 선언하고, 2로 초기화한 다음, i가 10보다 작을 동안 다음을 반복해라.
for (int j=1; j<10; j++) { // j변수를 선언하고, 1로 초기화한 다음, j가 10보다 작을 동안 다음을 반복해라.
System.out.print(i + "x" + j + "=" + (i*j) +"\t");
// i와 j의 곱을 출력
// println에서 ln을 제거해 일렬로 계속 나열하는 대신 \t를 이용해 한계산과 다음계산 사이에 공백을 넣음
}
System.out.println(); // 한 줄을 비워라.
}
// i와 j를 1 증가 시키면서 10보다 작을 때까지 이 과정을 반복해라.
// 답 :
2x1=2 2x2=4 2x3=6 2x4=8 2x5=10 2x6=12 2x7=14 2x8=16 2x9=18
3x1=3 3x2=6 3x3=9 3x4=12 3x5=15 3x6=18 3x7=21 3x8=24 3x9=27
4x1=4 4x2=8 4x3=12 4x4=16 4x5=20 4x6=24 4x7=28 4x8=32 4x9=36
5x1=5 5x2=10 5x3=15 5x4=20 5x5=25 5x6=30 5x7=35 5x8=40 5x9=45
6x1=6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36 6x7=42 6x8=48 6x9=54
7x1=7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49 7x8=56 7x9=63
8x1=8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64 8x9=72
9x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81
// 문제 : for문을 이용해 5행까지 숫자가 누적되는 별을 찍으시오.
// 풀이 :
char star = '*';
for (int i=0; i<5; i++) { // i변수를 선언하고, 0으로 초기화한 다음, i가 5보다 작을 동안 다음을 반복해라.
for (int j=0; j<=i; j++) { // j변수를 선언하고, 0으로 초기화한 다음, j가 i보다 작거나 같을 동안 다음을 반복 해라.
System.out.print(star); // star 변수를 출력해라.
}
// i와 j를 1 증가시키고 조건을 만족할 때 까지 반복해라.
System.out.println(); // 한 줄을 비워라.
}
// 답 :
*
**
***
****
*****
// 문제 : for문을 이용해 콘솔창에 찍는 숫자의 행만큼 숫자가 누적되는 별을 찍으시오.
// 풀이 :
import java.util.Scanner;
Scanner sc = new Scanner(System.in);
System.out.print("수 입력->");
int su = sc.nextInt(); // 콘솔창에 입력하는 부분
for (int i=1; i<=su; i++) {
for (int j=1; j<=i; j++) {
System.out.print('*');
}
System.out.println();
}
// 답 :
수 입력-> 4 (콘솔창에 입력)
*
**
***
****
----------------------------------------------------------------
<반복문 while>
for문과 달리 정확한 반복횟수가 정해져 있지 않아도 사용가능.
for문 보다 while문이 사용범위가 더 넓다고 보면 됨.
1. 변수 선언이 우선.
2. 조건이 '참'(true)인 동안만 반복 = 조건을 만족하는 동안만 돌아감.
증가하거나 감소하지 않으면 무한루프에 빠지기 때문에, 증감식이 안에 있어야 함.
while (조건) {
명령;
}
<연습문제>
// 문제 : while문을 이용해 1~10까지 출력하시오.
// 풀이 :
int i = 1;
while (i<=10) {
System.out.println(i++);
}
// 답 :
1
2
3
4
5
6
7
8
9
10
// 문제 : while문을 이용해 1~10까지 홀수만 찍어보시오.
// 풀이 :
int i = 1;
while (i<=10) {
System.out.println(i);
i += 2;
}
// 답 :
1
3
5
7
9
// 문제 : while문을 이용해 1~10까지 찍은 합계를 계산하시오.
// 풀이 :
int i = 1;
int sum = 0;
while (i<=10) {
System.out.println(i);
i++;
sum += i; // sum = sum + i;
}
System.out.println("총 합계:"+sum);
// 답 :
1
2
3
4
5
6
7
8
9
10
총 합계:65
or
// 문제 : while문을 이용해 1~10까지 찍은 합계를 계산하시오.
// 풀이 :
int i = 1;
int sum = 0;
while(true) {
System.out.println(i);
i++;
sum += i; //sum = sum +i;
if (i>10) break;
}
System.out.println("총 합계:"+sum);
// 답 :
1
2
3
4
5
6
7
8
9
10
총 합계:65
----------------------------------------------------------------
<Math.random()>
Math.random() 함수를 사용하면 return값이 0.0~0.9사이의 값이 나옴(=실수)
Math.random()*뽑아내길원하는마지막숫자+1 을 해주면 정수처리 할 수 있음.
ex) int com = (int)(Math.random()*100 + 1); // 컴퓨터가 추출한 임의의 실수를 정수처리 해줌.
<연습문제>
// 문제 : 1~100 사이의 숫자를 맞추는 게임을 만들어라
// 풀이 :
// 몇번 돌아야하는지 모르기 때문에 for문은 사용할 수 없음.
// 정확히 반복하는 횟수가 정해져 있지 않을 때 while 반복문을 사용함.
// 1. 컴퓨터가 임의의 수를 추출
// 2. 입력할 값을 변수에 저장 (내가 입력하는 숫자와 몇번만에 맞추었는지를 변수에 담아야 함)
// 3. 카운트 변수를 둬서 카운트를 누적하고 (내가 입력하는 숫자와 몇번만에 맞추었는지를 담아야 함)
// 4. 컴퓨터가 추출한 숫자와 내가 입력한 값(변수)을 비교해서 맞으면 탈출하고 틀리면 다시 조건식으로 입력받으러 감
// 탈출 break; 의 반대는 계속실행 continue;
// 5. 누적된 반복 수 만큼 출력해 주면 됨. (몇 번만에 맞추었는지)
int com = (int)(Math.random()*100 + 1); //컴퓨터가 임의의 수를 추출한 뒤 실수를 정수처리
int answer = 0; // 내가 입력하는 숫자를 담을 변수를 0으로 초기화
int count = 0; // 내가 몇번만에 맞췄는지 셀 변수를 0으로 초기화
import java.util.Scanner;
Scanner sc = new Scanner(System.in); // 키보드 객체 생성
while(true) {
System.out.print("숫자를 맞춰 보세요->"); // 숫자 입력, 조건이 참인 동안만 반복
answer = sc.nextInt(); // 콘솔창에 내가 입력하는 함수 (=나의 답)
count++; // 내가 입력한 횟수를 카운트를 누적함.
if (com > answer) System.out.println(answer+"보다 크다");
else if (com < answer) System.out.println(answer+"보다 작다");
else {
System.out.println(count+"번 만에 맞췄네");
break;
}
}
// 답 :
숫자를 맞춰 보세요->9 (콘솔창에 내가 입력)
9보다 크다
숫자를 맞춰 보세요->50 (콘솔창에 내가 입력)
50보다 크다
숫자를 맞춰 보세요->70 (콘솔창에 내가 입력)
70보다 작다
숫자를 맞춰 보세요->60 (콘솔창에 내가 입력)
60보다 작다
숫자를 맞춰 보세요->55 (콘솔창에 내가 입력)
55보다 크다
숫자를 맞춰 보세요->57 (콘솔창에 내가 입력)
6번 만에 맞췄네
'JAVA' 카테고리의 다른 글
<JAVA_PreClass_231013금> (0) | 2023.10.13 |
---|---|
<JAVA_PreClass_231012목> (2) | 2023.10.12 |
<JAVA_PreClass_231010화> (0) | 2023.10.10 |
<JAVA_PreClass_231006금> (0) | 2023.10.06 |
<JAVA_PreClass_231005목> (2) | 2023.10.05 |