내가 약하고 어려워하는 반복문이다. 구조는 알기에 주로 어려워하는 부분만 기록하겠다.
#반복문
#향상된 for문
#break문과 continue문
#for문과 while문의 차이
for 는 반복횟수를 알 때, while 은 몇번이고 상관없이 조건에 맞춰서 반복할 때 사용한다.
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님은 자바를 공부중 입니다.
*/
위와 같이 for문의 괄호( ()) 안에는 배열에서 꺼낸 항목을 저장할 변수 선언, 콜론( : ), 그리고 사용할 배열이 작성됩니다. 향상된 for문을 처음 실행 할 때, names 배열에서 가져올 첫번째 값이 존재하는지 확인 하고, 값이 존재하면 해당값을 변수인 name에 저장합니다. 그리고 그 안의 실행문을 실행합니다. 블록 내부의 실행문이 모두 실행 되면 다시 names 배열에서 가져올 값이 있는지 확인 하고 만약 가져올 다음 항목이 없다면 자동적으로 for문이 종료됩니다.
1.isPrime
2.listPrimes
문제 : 2 이상의 자연수를 입력받아 2부터 해당 수까지의 소수(prime number)들을 리턴해야 합니다.
출력 : 2-3-5-7-11-13-17 형식으로 리턴해야된다.
package com.codestates.coplit;
public class Solution {
public boolean isPrime(int num) {
if(num == 2){
return true;
}
if(num ==1 || num % 2 == 0){
return false;
}
//홀수는 홀수로만 나누어 떨어질 수 있다.
//2는 들어올 필요 없으니 3부터 시작한다.
//홀수는 홀수로만 나누어 떨어질 때만 점검하면 되기에 divider+2
//제곱근 까지 나누어 떨어지면 뒤에 대칭되는 숫자도 나누어 떨어지는 것이기에 소수가 아닌 것
//divider <= (int)Math.sqrt(num)
for(int divider = 3; divider <= (int)Math.sqrt(num); divider + 2){
if(num % divider == 0){
return false;
}
return true;
}
}
}