for문은 조건식이 참인 동안 주어진 횟수만큼 실행문을 반복적으로 수행합니다.
public class Main { public static void main(String[] args) { int sum = 0; // for (초기화; 조건식; 증감식) for(int num = 0; num < 10; num++) { sum += num; } System.out.println(sum); // 1~9의 합인 45가 출력됩니다. } }
초기화는 for문이 시작할 때 최초 한 번만 수행되며, 사용할 변수의 초깃값을 정합니다.
조건식은 계속 반복할지 여부를 결정하는 조건입니다. 조건식 안의 값이 true라면 실행문을 실행시키고, false라면 더 이상 블록을 실행하지 않고 끝납니다.
증감식은 반복 횟수를 결정하는 규칙입니다. 변수에 값을 더하거나 곱하는 등 수행 방식을 지정합니다. ++ 은 반복문에서 자주 쓰는 증감연산자로, 피연산자의 값을 1 증가시킵니다.
자바에서는 향상된 for문을 제공합니다. 향상된 for문은 반복실행을 하기 위해 카운터 변수와 증감식을 사용하지 않습니다. 배열 및 컬렉션 항목의 개수만큼 반복하고 자동적으로 for문을 빠져나갑니다.
public class EnhancedForLoop { public static void main(String[] args) throws Exception { String[] names = {"kimcoding", "javalee", "ingikim"}; for(String name : names) { System.out.println(name + "님은 자바를 공부중 입니다."); } } } /* kimcoding님은 자바를 공부중 입니다. javalee님은 자바를 공부중 입니다. ingikim님은 자바를 공부중 입니다. */
문제 1이상의 자연수를 입력받아 소수인지 여부를 리턴하는 코드
for문 제어할 때 i<num을 i<=(int)Math.sqrt(num)로 바꿀 수 있다.
while문은 조건식이 true일 경우에 계속 반복합니다.
int num = 0, sum = 0; while(num <= 10) { sum += num; num++; } System.out.println(sum);
public class Solution { public boolean isOdd(int num) { //조건문을 사용하여 짝수인 경우 return false를, //홀수인 경우 return true;를 작성해야 합니다. //TODO : 1. 음수 양수 절대값으로 씌워주기 2. num이 0보다 크면 반복문 실행 3. num-2-2-2-2..... 반복실행 4. num이 홀수라면 true를 리턴 num = Math.abs(num); while(num>0){ num -= 2; if(num==1) return true; } return false; //아니면 모두 false } }
블록 내부의 실행문을 우선 실행시키고 실행 결과에 따라서 반복 실행을 계속 할지 결정하는 경우에 사용합니다.
// do-while의 기본형식 do { (1)실행문 //처음 한 번은 무조건 실행 } while((2)조건식);
do-while문이 처음 실행될 때 do{(1)실행문을 먼저 실행합니다. (1)실행문이 모두 실행되면 }while((2)조건식); 을 평가합니다. 그리고 그 결과가 true이면 (1)실행문 → (2)조건식으로 반복 실행을 하고, false이면 do-while문을 종료합니다.
import java.util.Scanner; public class Main { public static void main(String args[]){ int input = 0, randomNum = 0; randomNum = (int)(Math.random() * 10) + 1; // 1 ~ 10 임의의 수를 생성 Scanner scanner = new Scanner(System.in); do{ System.out.println("1과 10 사이의 정수를 입력하세요"); input = scanner.nextInt(); if(input > randomNum) { System.out.println("더 작은 정수를 입력하세요"); } else if (input < randomNum) { System.out.println("더 큰 정수를 입력하세요"); } } while(input != randomNum); System.out.println(randomNum +" 정답입니다!"); } }