9. for 문
by mini_min◾ for 문은 (초기식 ; 조건식 ; 증감식) { 실행문 } 으로 구성된다.
1. 초기식 2. 조건식 3. 실행문 4. 증감식 5. 조건식 6. 실행문 ... 거짓이 될 때 까지 실행
int n;
for(n=1; n<=10; n++) {
System.out.print(n + " ");
}
◾ for 문 안에서 선언한 변수는 for 문 밖에서 사용이 불가하다.
그러니 밖에서 변수 n 을 호출할 수 없다는 것이다.
// for 문장 안에서 선언한 변수는 for문 밖에서 사용 불가
for(int n=1; n<=10; n++) {
System.out.print(n + " ");
}
System.out.println();
◾ 반복 횟수에 사용된 변수 값을 변경할 때, 조건식을 주의해야한다.
int a;
for(a=1; a<=10; a++) {
System.out.print(a + " ");
if(a%3==0) {
a +=5; // 반복횟수에 사용된 변수 값을 변경하면 반복 횟수도 변한다. //8 에 a++ 해서 9값이 조건식에 들어감.
}
}
System.out.println("밖: " +a);
◾ for 문은 조건을 만족하지 않으면 한 번도 실행되지 않는다.
int n;
for(n=10; n<=1; n--) {
System.out.println(n + " "); // 조건을 만족하지 않으면 한 번도 실행하지 않음.
}
System.out.println("\n밖: " + n);
◾ 1 ~ 100 까지 홀수의 합만 구하기
for문에서는 무한루프에 걸리지 않도록 주의해야한다.
int n,s;
s = 0;
for(n=1; n<=100 ; n+=2) {
s += n;
}
System.out.println("결과 : " + s);
◾ for 문에서 변수 형을 float 으로 설정하면 정밀도가 낮아서 출력이 제대로 되지 않는다.
for 문의 반복 횟수로 float 형을 사용하면 안된다.
double 도 정밀도가 완전하진 않는다.
int start = 2000000000;
int count = 0;
for(float f = start; f < start + 50; f++) {
count++;
}
System.out.println(count);
// float 형 2000000050 는 2000000000 으로 저장. 정밀도가 낮아서 잘 출력되지 않음.
// float 형을 for문의 반복 횟수로 사용하면 안된다.
double a = 0;
a +=4.7;
a +=.4; // 2진수로 바꿀 수 없어서 자름 ... 등...
System.out.println(a == 5.1); // false (double도 정밀도가 완전하진 않음.)
System.out.println(a);
◾ 다중 for 문 ! for 안에 변수는 같으면 에러난다.
가장 안에 있는 for 문이 2번 돌아가는데
2번씩 3번 실행되어서 총 6개의 결과가 출력된다.
for(int i=1; i<=3; i++) {
System.out.println("i : " + i); // 3번 출력
for(int j=1; j<=2; j++) { // 6번 출력
System.out.println("i: " + i + ", j: " + j);
}
System.out.println("-----");
}
◾ 2~9단 구구단 출력하기
// 2~9단 까지 구구단 출력하기
for(int i=2; i<=9 ; i++) {
System.out.println("**" + i + "단 **");
for(int j=1; j<=9; j++) {
System.out.printf("%d * %d = %d\n", i, j, i*j);
}
System.out.println("-------------");
}
◾ 별 꺼꾸로 찍기
5자리가 있다고 치면 첫번째 줄은 자리 4개는 공백으로 채우고, 나머지 1자리는 별을 찍는다.
int s = 5;
for(int i=0; i<s; i++) {
for(int j=s; j>0; j--) {
System.out.print(j <= i+1 ? "*" : " ");
}
System.out.println();
}
◾ 트리 찍기
핵심은 별이 홀수 갯수만큼 나온다는 것과 공백부터 찍는 다는 것 !!
/*
* - 1
*** - 3
***** - 5
******* - 7
********* - 9 (홀수 갯수만큼의 별이 출력된다.)
*/
for(int i=1; i<=5; i++) {
for(int j=1; j<=5-i; j++) {
System.out.print(" ");
}
for(int j=1; j<=2*i-1; j++) {
System.out.print("*");
}
System.out.println();
}
◾ 퀴즈) 수를 입력 받아서 1부터 해당 수 만큼 합을 구하기
do while을 사용해서 do 안에 문장은 무조건 한 번 실행되도록 한다.
입력받은 num 이 1 이하도 아니고 1000 이상도 아니기 때문에 바로 아래 for 문으로 내려가서 덧셈이 시작된다.
Scanner sc = new Scanner(System.in);
int n,s,num;
num = 0;
s = 0;
do {
System.out.print("수 ? ");
num = sc.nextInt();
sc.close();
}while(num < 1 || num > 1000);
for(n=1; n<=num; n++) {
s += n;
}
System.out.printf("1~%d까지 합 : %d", num, s);
◾ 정수 10개를 입력 받아서 가장 큰 값이 업데이트 되도록 한다.
Scanner sc = new Scanner(System.in);
int n;
int max;
System.out.print("10개의 정수를 입력하세요...");
max = 0;
for(int i=0; i<10; i++) {
n = sc.nextInt();
if(max < n) {
max = n;
}
}
'개발 공부중 > 📑 코드 복습' 카테고리의 다른 글
10. while 문 (0) | 2023.02.24 |
---|---|
* 연산 퀴즈 (0) | 2023.02.23 |
8. switch case 문 (1) | 2023.02.22 |
7. IF 제어문 + 퀴즈 (0) | 2023.02.22 |
6. 연산자 - 퀴즈 (0) | 2023.02.22 |
블로그의 정보
개발자 미니민의 개발로그
mini_min