Java

[Java] continue, break / 배열(array) / if, for 문 응용

소댓 2023. 3. 7. 18:15

* continue / break + 라벨

- continue : 가까운 반복문 실행하지 않고 다음으로 넘김(남아 있는 것 실행)
- break : 가까운 반복문 탈출(몇 번 남아있던지 상관 없이 탈출)

- break 라벨 : 라벨명이 부여된 문장을 탈출
- continue 라벨 : 라벨명이 부여된 문장에서 이번만 넘김

 

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
package day04;
// continue : 가까운 반복문 실행하지 않고 다음으로 넘김(남아 있는 것 실행)
// break : 가까운 반복문 탈출(몇 번 남아있던지 상관 없이 탈출)
 
// break 라벨 : 라벨명이 부여된 문장을 탈출
// continue 라벨 : 라벨명이 부여된 문장에서 이번만 넘김
public class StatementTest24 {
    public static void main(String[] args) {
        outer : // 라벨을 줌
        for(int j=1; j<=3; j++) {
            System.out.println(j + " 회차 반복");
            for(int i = 1; i <= 4; i++) {
                if ( i == j ) {
                    continue outer; 
                    // if (i > j) break outer; // 라벨 부분을 break
                    // if ( i > j ) break; 
                    // if (i == j) continue;
                }    
                System.out.println("j : " + j + " , i : " + i );
                
                // 더블클릭으로 토글 만들고 f11 누르면 디버그 모드
                // 플레이 버튼 누르면 한단계씩 진행됨(Variables창으로 확인)
            }
        }
    }
 
}
cs

 

* 디버그 모드
- 더블클릭으로 토글 만들고 f11 누르면 디버그 모드
> 플레이 버튼 누르면 한단계씩 진행됨(Variables창으로 확인)

 


[ 배열 ]

 

* 배열 : apt형 변수
- 동일한 사이즈에 연속된 공간에 할당되는 변수

-변수의 타입 중 'reference type'에 'array'가 속함

 

- 자료형[] 변수명;
- 자료형   변수명[];

 

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package day04;
// 배열 : apt형 변수
// 동일한 사이즈에 연속된 공간에 할당되는 변수
 
// primitive type
 
// reference type
// array
 
public class ArrayEx01 {
    public static void main(String[] args) {
        // 자료형 변수명;
        int a = 10;
        // stack에 m이라는 공간이 할당됨
        // 그 공간에 10이라는 값이 저장
        
        // 자료형[] 변수명;
        // 자료형   변수명[];
        
        int[] m; // 32평 apt
        // int m[];
        // 선언하면 stack에 m이라는 공간이 할당됨
        
        m = new int[3];
        // heap이라는 영역에 새롭게 int 크기로 세 칸의 연속된 공간의 변수를 만듦
        // 실제 할당되는 메모리 주소(참조값) -> stack의 'm'에 할당됨
        // 아래부터 m[0], m[1], m[2]
        
        System.out.println("a : " + a);
        System.out.println("m : " + m);
        
        System.out.println("m[0] : " + m[0]);
        System.out.println("m[1] : " + m[1]);
        System.out.println("m[2] : " + m[2]);
        System.out.println("--------------------------");
        // 처음에는 기본값이 들어 있음
        // 이때 기본값이란 해당 자료형의 값을 0으로 하는 값
        // 즉 int 배열 0, float 배열 0.0f, boolean false
        
        m[1= 500;
        System.out.println("m[0] : " + m[0]);
        System.out.println("m[1] : " + m[1]);
        System.out.println("m[2] : " + m[2]);
        System.out.println("--------------------------");
        
        // float 타입 배열 f를 선언하고
        float []  f;
        // 3개의 float 변수를 갖는다.
        f = new float [3];
        
        // 0, 1, 2 <= 2번 180.0f를 대입
        f[2= 180.0f;
        // 화면에 출력
        System.out.println("f[0] : " + f[0]);
        System.out.println("f[1] : " + f[1]);
        System.out.println("f[2] : " + f[2]);
        System.out.println("--------------------------");
        
//        m[0] = 10;
//        m[1] = 20;
//        m[2] = 30;
        
        for (int i = 0; i<3; i++) {
            m[i] = (i+1)*10;
            System.out.println("m[" + i+"] : " + m[i]);
            }
            System.out.println("--------------------------");
            System.out.println("m[0] : " + m[0]);
            System.out.println("m[1] : " + m[1]);
            System.out.println("m[2] : " + m[2]);
        }
    }
cs

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package day04;
 
public class ArrayEx02 {
    public static void main(String[] args) {
        
        // int 타입 배열 5칸 짜리 c 배열
        int[] c; // int c[];
        
        // System.out.println("c : " + c); // error : 초기화 안해서
        
        // 5개의 배열 요소를 갖도록 하자.
        c = new int[5];
        
        // 자료형의 기본값 : 0으로 
        // boolean : false
        // String : null
        // float : 0.0f
        // double : 0.0d
        
        System.out.println("c[4] : " + c[4]);
    }
}
cs

 

 


 

[ 실습 ]

 

* 3의 배수 중 15개만 구해서 누적합 구하기 > for 문 / if 문 / count / break 

 

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
package day04;
 
public class StatementTest23 {
 
    public static void main(String[] args) {
        
        // 1. 1부터 1000까지 누적합
        int sum = 0;
        int count = 0;
        for (int i = 1; i <= 1000; i++) {
            // 2. 3의 배수만 가지고 누적합
            if (i%3 == 0) {
            count++;
            sum += i;
            System.out.println(count + " , 누적합 : " + sum);
            // 3. 3의 배수 중 15개만 구해서 누적합
            //만약 카운트값이 15가 되면 탈출
            if(count==15) {
                break;
            }
        }
 
        }
    }
}
cs

 

 


[ 응용 ]

1. 변수 x가 10보다 크고 20보다 작을 때 변수 x를 출력하는 코드를 작성하시오

 

package day04;

public class Day04Q01 {

	public static void main(String[] args) {
		
		
		for (int i = 1; i < 20; i++) {
			if ( i > 10) {
			System.out.println(i);
		}
		}

	}

}
 

 

 

2. for문을 사용하여 0부터 10미만의 정수 중에서 짝수만을 작은 수부터 출력하시오.

 

package day04;

public class Day04Q02 {

	public static void main(String[] args) {
		
		for(int i = 0; i < 10; i++) {
			if (i%2 == 0) {
				System.out.println(i);
			}
		}

	}

}
 

 

 

3. for문을 사용하여 0부터 10미만의 정수 중에서 짝수만을 작은 수부터 옆으로 출력하세요

package day04;

public class Day04Q03 {

	public static void main(String[] args) {

		for(int i = 0; i < 10; i++) {
			if (i%2 == 0) {
				System.out.print(i);
			}
		}

	}

}
 

 

 

4. for문을 사용하여 0부터 10미만의 정수 중에서 홀수만을 큰수부터 출력하시오.

package day04;

public class Day04Q04 {

	public static void main(String[] args) {
		for(int i = 10; i >= 0; i--) {
			if (i%2 == 1) {
				System.out.println(i);
			}
		}
	}
}
 

 

5. while문을 사용하여 0 부터 10 미만의 정수 중에서 짝수만을 작은 수부터 출력하시오.

package day04;

public class Day04Q05 {
	public static void main(String[] args) {
		
		int i = 0;
		while (i < 10) {
			if (i%2 == 0) {
			System.out.println(i);
			}
			i++;
		}
	}
}
 

6. while문을 사용하여 0 부터 10 미만의 정수 중에서 홀수만을 큰수부터 출력하시오.

package day04;

public class Day04Q06 {

	public static void main(String[] args) {
		
		int i = 10;
		while (i >= 1) {
			if (i%2 == 1) {
			System.out.println(i);
			}
			i--;
		}

	}

}
 

 

 

7. for 문을 사용하여 0부터 10미만의 정수의 합을 출력하시오.

package day04;

public class Day04Q07 {

	public static void main(String[] args) {
		
		int sum = 0;
		for (int i = 1; i < 10; i++) {
			sum += i;
		}
		System.out.println(sum);
	}

}
 

 

 

8. 1부터 20 미만의 정수 중에서 2 또는 3의 배수가 아닌 수의 총합을 구하시오.

package day04;

public class Day04Q08 {

	public static void main(String[] args) {
		
		int sum = 0;
		for(int i = 1; i < 20; i++) {
			if (i%2 != 0 && i%3 != 0) {
				sum += i;
			}
		}
		System.out.println(sum);
	}

}
 

 

 

9. 1부터 20 미만의 정수 중에서 2 또는 3의 배수인 수의 총합을 구하시오.

package day04;

public class Day04Q09 {
public static void main(String[] args) {
	

		int sum = 0;
		for(int i = 1; i < 20; i++) {
			if (i%2 == 0 && i%3 == 0) {
			sum += i;
			}
		}
		System.out.println(sum);
}
}
 

 

10. 두 개의 주사위를 던졌을 때, 눈의 합이 6이 되는 모든 경우의 수를 출력하시오.

package day04;

public class Day04Q10 {

	public static void main(String[] args) {


		for(int j = 1; j <= 6; j++) {
			for (int i = 1; i <= 6; i++) {
				if (i+j == 6) {
				System.out.println("첫번째 주사위 : " + i + " , 두번째 주사위 : " + j);
				}
			}
		}
		
	}

}
 

 

 

11. 정수 한 개를 입력받아서, 그 수가 50 이상의 수인지 50미만의 수인지 판단해보자.

 

package day04;
import java.util.Scanner;
public class Day04Q11 {

	public static void main(String[] args) {

		System.out.println("입력 : ");
		Scanner sc = new Scanner(System.in);
		int i = sc.nextInt();
		
		if (i < 50) {
			System.out.println(i+"은 50 미만 입니다.");
		} else  {
			System.out.println(i+"은 50 이상 입니다.");
			}

		}

	}
 

12. 정수 한 개를 입력받아서, 그 수가 3의 배수인지 출력하세오

package day04;
import java.util.Scanner;
public class Day04Q12 {

	public static void main(String[] args) {
		
		System.out.println("입력 : ");
		Scanner sc = new Scanner(System.in);
		int i = sc.nextInt();
		
		if (i%3 == 0) {
			System.out.println(i+"은 3의 배수 입니다.");
		} else {
			System.out.println(i+"은 3의 배수가 아닙니다.");
		}

		

	}

}
 

 

 

13. 초등학교에서 1학년부터 4학년까지 중간고사 시험을 보았다.

4학년은 70점 이상이면 합격, 그 이외의 학년은 60점 이상이면 합격이다. 이를 판단하는 프로그램을 작성해보자.

점수가 0미만 100초과이면 경고문구 출력!

학년:1

점수:120

점수 범위 초과

--------------------------

학년: 1

점수: 50

불합격

--------------------------

학년:2

점수:90

합격

--------------------------

학년:4

점수: 65

불합격

package day04;
import java.util.Scanner;

public class Day04Q13 {
	public static void main(String[] args) {
		
		// 스캐너 객체를 생성
		Scanner sc = new Scanner(System.in);
		
		int grade = 0;
		int score = 0;
		
		System.out.println("학년 : ");
		grade = sc.nextInt();
		
		System.out.println("점수 : ");
		score = sc.nextInt();

		System.out.println("학년 : " + grade);
		System.out.println("점수 : " + score);
		
		if(score >= 0 && score < 100 ) {
		if(grade <= 3 && score >= 60) {
			System.out.println("합격");
		} else if (grade == 4 && score >= 70) {
			System.out.println("합격");
		} else {
			System.out.println("불합격");
		}
		} else {
			// 점수 범위 초과
			System.out.println("점수 범위 초과");
		}
		System.out.println("-------------------------");
		
	}

}
 

 

14. 사용자로부터 3 개의 정수를 입력받아, 그 수들의 최대값과 최소값, 합계와 평균을 구해보자.

package day04;
import java.util.Scanner;
public class Day04Q14 {

	public static void main(String[] args) {

Scanner sc = new Scanner(System.in);
		
		System.out.println("세 개의 수 입력 : ");;
		int a = sc.nextInt();
		int b = sc.nextInt();
		int c = sc.nextInt();
		
		int max = 0;
		int min = 0;
		
		if (a >= b) {
			// a가 더 큰 경우
			if (a >= c) {
				// a가 제일 큰 경우
				max = a;
			} else {
				max = c;
			}
		}else {
			// b가 더 큰 경우
			if (b >= c) {
				max = b;
			} else {
				max = c;
			}
		}
		
		if (a >= b) {
			// b가 더 작은 경우
			if(b >= c) {
				min = c;
			} else {
				min = b;
			}
		}else {
			// a가 더 작은 경우
			if( a>= c) {
				min = c;
			} else {
				min = a;
			}
		}
		System.out.println("최대값 : " + max);
		System.out.println("최소값 : " + min);

		int tot = a + b + c;
		float avg = tot/3.0f;
		
		System.out.println("총합 : " + tot);
		System.out.println("평균 : " + avg);
	} // main method end

} // class end
 

 

15. 정수 한 개를 입력받아, 입력받은 수가 양수, 0, 음수인지 판단해보자.

package day04;
import java.util.Scanner;
public class Day04Q15 {

	public static void main(String[] args) {
		
		System.out.println("입력 : ");
		Scanner sc = new Scanner(System.in);
		int i = sc.nextInt();
		
		if (i == 0) {
			System.out.println(i + "은 0 입니다.");
		} else if (i > 0) {
			System.out.println(i + "은 양수 입니다.");
		} else {
			System.out.println(i + "은 음수 입니다.");
		}

	}

}
 

 

 

16. 사용자로부터 키를 입력받는다. 입력받은 키가

1) 150 이상이면, 놀이기구 이용 가능

2) 150 미만이면, 부모와 함께 왔는지 한 번 더 묻는다.

함께 왔다면 1번을 입력받고, 혼자 왔다면 0번 입력받는다.

1번 입력: 좋은 시간 보내렴~

0번 입력: 어른 모시고 다시 오렴~

 

package day04;
import java.util.Scanner;
public class Day04Q16 {

	public static void main(String[] args) {

		System.out.println("키를 입력하시오 : ");
		
		Scanner sc = new Scanner(System.in);
		int height = sc.nextInt();
		
		if (height >= 150) {
			System.out.println("좋은 시간 보내렴~");
		} else if (height < 150) {
			System.out.println("부모님과 함께 왔습니까? (1번: 예 / 2번 : 아니오)");
			Scanner sc2 = new Scanner(System.in);
			int i = sc2.nextInt();
			if (i == 1) {
				System.out.println("좋은 시간 보내렴~");
			} else {
				System.out.println("어른 모시고 다시 오렴~");
			}
		}

	}

}