[Java] 반복문과 배열

J.A.Y·2023년 3월 15일
0

Java

목록 보기
2/8

1. while

while(조건) {
    반복 실행 영역
}

2. for

for (초기화; 조건; 반복실행) {
    반복적으로 실행될 구문
}

💛예제

public class Variable {
	public static void main(String[] args) {
        int a = 0;
		while (a<10) {                    // 또는 while (true)
			System.out.println(a);
		++a;       
		}
	}
}
public class Variable {
	public static void main(String[] args) {

		for (int b = 0; b<10; ++b) {
			System.out.println(b);
		}
	}
}

🤷‍♀️while과 for의 차이점?

  • while과 for 얼핏 보면 똑같아 보이지만 이 둘의 차이점은 명확하다. while문은 구하고자 하는 값을 정확히 모를 경우나 값이 유동적일 때 유용하고, for은 구하고자 하는 값을 얻기 위한 조건을 정확히 아는 경우에 유용하다.
  • 3. Break와 반복문 중첩

  • 반복문은 자동적으로 순차 구조로 진행되기 때문에 정지를 원하는 구간이 있다면 break로 제어를 걸어줘야 한다.

  • 뿐만 아니라 while은 계속 true일 때 무한으로 실행되면서 브라우저에 과부하가 오기 때문에 변수를 이용해 false가 될 때를 정해주거나 break문을 사용해서 종료시켜 주는 것이 좋다.
  • 💛예제

    for (int a=0; a<10; a++;) {
        if (a == 5)
            break;
        System.out.println(a);
    int num = 0;
    while(true){
      system.out.pritln(num);
           num++;
           if(num == 10) 
           break;                

    💫if(num == 10) break;를 빼고 이클립스 실행시켜봤더니 아무리 코드를 수정해도 무한루프 실행 오류가 발생해서 이클립스 강제 종료함... 무서운 것...

  • 그리고 반복문은 중첩해서 사용할 수 있는데 상위 반복문은 하위 반복문의 반복조건이 모두 충족 된 후 재반복된다. 무슨 의미인지는 다음 예제를 보고 이해하도록 하자.
  • 💛예제

    public static void main(String[] args) {
            for (int i = 0; i < 10; i++) {           //  상위 반복문은 한번 실행되면
                for (int j = 0; j < 10; j++) {       //   하위 반복문이 끝날때까지 실행되지 않는다. (scratch 반복구조와 동일)
                    System.out.println(i + "" + j);
                }
            }
     
        }

    4. forEach

  • 일반적으로 for문을 많이 사용하지만 배열 속 요소들을 한 번씩 반환해 반복시키는 단순한 작업을 할 때는 forEach를 이용한다. 아래의 두 코드의 출력 결과물을 보면 forEach가 언제 주로 유용하게 쓰이는지 알 수 있다.
  • 💛예제

    String[] numbers = {"one", "two", "three"};
    for (int i = 0; i < numbers.length; i++) {
        System.out.println(numbers[i]);
    String[] numbers = {"one", "two", "three"};
    for (String number: numbers) {
        System.out.println(number);


    🤔그런데.... 만약 내가 반복 횟수를 조정하거나 반복 조건을 수정하고 싶다면?? forEach는 사용할 수 없는 걸까❔

    그렇다.


    forEach문은 불가능하다고 한다. 이것이 forEach문의 한계라고 볼 수 있는데 1씩 순차적으로 반복할때만 가능하다.

    🎓배웠으니 이제 써먹어야지?😉

    1. for 실습
    2. foreach 실습

    1. for 실습

    ▶수행 평가 과정을 보여주는 코드

    생활코딩에 나온 예제를 변형해서 리코더 수행 평가하는 과정을 출력하고 싶었다. 아래는 그 과정을 코드로 옮긴 것이다. 어딘가 이상했는지 오류가 났었는데, 이유가 for문에 semicolon을 넣었기 때문이었다.

    public class for_each{
    	public static void main (String[] args) {
    	System.out.println("수행평가를 시작하겠습니다.");
    	String[] students = {"유리", "짱구", "철수", "훈이", "맹구"};
    	for (int i = 0; i < students.length; i++) {                     // i++); 였는데 수정함
    	String student = students[i];
    	System.out.println(student + ", 연주를 마치겠습니다.");
    	      }
    	System.out.println("수행평가를 마치겠습니다.");
    	}
    } 

    😓한글 문자 깨짐 발생💢

    수정 후 정상출력 됐으나 이번엔 한글 문자가 깨져서 나왔다. 그래서 구글링으로 찾아낸 아래 단계들을 시도했더니 한글 문자 깨짐 현상이 해결됐다.
    1. Window → preferences → 'spelling' 검색 → Encoding: Default(UTF-8) 체크 → Apply 클릭
    2. Window → preferences → 'workspace' 검색 → Text File encoding: Other: UTF-8 체크 → Apply 클릭
    3. 현재 진행중인 프로젝트의 mainclass 실행 (키보드 F11)
    4. 현재 진행중인 프로젝트 마우크 오른쪽 클릭 → Properties → Run/Debug Settings 클릭
    5. 목록 중에서 현재 진행중인 class 실행
      6-1. Arguments → VM arguments Arguments → text 작성란 "-Defile.encoding=MS949" 입력 → Apply 클릭
      6-2. Common → Encoding → Other란 "EUC-KR" 입력 → Apply 클릭 → Ok 클릭

    Success! 👏

    2. foreach 실습

    ▶ 이번엔 foreach를 이용해서 코드를 더 단순하게 만들어보고자 한다.

    public class for_each{
    	public static void main (String[] args) {
    	System.out.println("수행평가를 시작하겠습니다.");
    	String[] students = {"유리", "짱구", "철수", "훈이", "맹구"};
    	for (String i : students) {
    		System.out.println(i + ", 연주를 마치겠습니다.");
    	      }
    	System.out.println("수행평가를 마치겠습니다.");
    	}
    }
    Success!! 👏
    profile
    Done is better than perfect🏃‍♀️

    0개의 댓글