for(1.초기화; 2.조건식; 4.증감식) {
3.반복해서 실행할 문장;
}
1) 초기화; // (int i = 0 ...) -i는 index의 약자
2) 조건식;
3) 조건식이 거짓이 될때까지 코드 실행
4) 증감식 // i++ i --
1 초기화식이 제일 먼저 실행된다.
2 조건식을 평가해서 true이면
3 실행문을 실행시키고, false이면 for문 블록을 실행하지 않고 끝나게 된다. 블록 내부의 실행문들이 모두 실행되면
4 증감식을 실행시키고
5 다시 조건식을 평가한다.
for(int i = 1; i <= 7; i++) {
System.out.println(i + ". hello world");
}
// 1. hello world
// 2. hello world.. 를 7까지 반복
for(초기화; 조건식; 증감식) {
반복해서 실행할 문장
}
for(int i = 1; i <= 7; i++) {
System.out.println(i + ". 안녕 java");
}
for(int i = 0; i < 10; i+=1) { i+=1; ==> i = i+1; 와 같다.
System.out.println((i+1) + ".안녕 java");
}
for(int i = 1; i < 10; i+=2) {
System.out.println(i + ". 안녕 이클립스");
}
for(int i = 0; i < 10; i++) {
System.out.println(++i + ". 안녕 이클립스"); 전위,후위연산자 기억하기!
}
for(int i = 1; i < 10; i+=2) {
System.out.println( i + ". 안녕 Eclipse");
}
for(int i=0, j=0; i<10; i++, j+=2) {
System.out.println((j+1) + ".안녕 오라클~");
10번 반복 -> 찍기는 j=> 1,3,5,7,9,11,13,15,17,19 총 10번 반복해서 찍어냄.
}
for(int i = 10; i > 0; i--) {
System.out.println(i+". 안녕 oracle");
}
for(int i = 10; i > 0; i-=1) { i = i-1;
System.out.println(i+". 안녕 스프링");
}
for(int i = 10; i> 0; i--) {
if(i%2 != 0) i % 2 은 i를 2로 나누었을 때의 나머지를 나타낸다.
System.out.println(i+".안녕 spring");
if가 하나뿐이면 {} 생략 가능
}
for(int i= 10; i>0; i-=2) {
System.out.println((i-1)+".안녕하십니까?~~");
}
for(int i= 10; i>0; i-=2) {
System.out.println((i-1)+".안녕하십니까?~~");
}
for(int i= 10; i>0; i--) {
System.out.println(i-- +".안녕하십니까?~~");
}
for(int i= 0, j = 9; i < 5; i++,j-=2) {
System.out.println(j + ".안녕하십니까?~~");
}
int i = 0; 초기화
for(i = 0; i < 5; i++) { i가 5일때 빠져나옴(조건식이 false인 순간 빠져나감)
System.out.println((i + 1) + ".길동");
}
System.out.println("반복문을 빠져나온 i값 :" + i);
조건식 증감식이 두번이나 되는줄은 해보지 않아서 몰랐는데 여러가지 경우의 수를 생각해봐야겠다..
for(int i = 0; i < 10; i++) {
if(i == 5) break; // i가 5가 되면 반복문 빠져나옴
System.out.println(i+1);
}
int cnt = 0;
for(;;) {
System.out.println(++cnt + "번째 반복");
if(cnt == 5) break; //반복문에서 break;를 만나면 가장 가까운 반복문을 빠져나간다.
}
for(int i = 1; i <= 10; i++) {
if(i % 2 == 0) { //출력하고자 하는 값이 짝수라면
continue;
}
System.out.print((i+1) +" ");
}
// i -> 0 -> (i+1) = 1 -> print
// i -> 1 -> (i+1) = 2 -> continue; -> print하지않고 패스한 채 다시 다음 for문
// i -> 2 -> (i+1) = 3 -> print
// ... 10번 반복
반복문에서 continue를 만나면 가장 가까운 반복문의 증감식으로 이동시켜준다.
for (int i = 0; i < 10; i++) {
// if((i+1)%2 == 0) continue;
// if(i<9) {
// System.out.print((i+1) + ",");
// } else {
// System.out.print((i+1) + " ");
// }
String str = (i<9)?",":" ";
System.out.println((i+1) + str);
}
for(int i = 0; i < 10; i++) {
if((i+1)%2 == 0) {
continue;
}
String str = ((i+1) < 9 )?",":"";
System.out.print((i+1) + str);
}
삼항 연산자 문법 : 조건식?true:false
누적해야할 시작 숫자 => 3
누적해야할 마지막 숫자 => 5
[실행결과] 3+4+5=12
누적해야할 시작 숫자 => 똘똘이
[경고] 올바른 정수만 입력하세요!! (끝내는게 아니라 다시 시작)
누적해야할 시작 숫자 => 3
누적해야할 마지막 숫자 => 345234543643643543
[경고] 올바른 정수만 입력하세요!! (끝내는게 아니라 다시 시작)
누적해야할 마지막 숫자 => 6
3+4+5+6=18
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int sum = 0;
String str = " ";
for(;;) {
try {
System.out.println("누적해야할 시작 숫자 =>");
int start_no = Integer.parseInt(sc.nextLine());
System.out.println("누적해야할 마지막 숫자 =>");
int end_no = Integer.parseInt(sc.nextLine());
for(int i = start_no; i <= end_no; i++) {
String add = (i<end_no)?"+":"=";
str += i + add;
sum += i;
}
} catch(NumberFormatException e) {
System.out.println("[경고] 올바른 정수만 입력하세요!!");
continue;
}
sc.close();
break; //for문을 빠져나간다.
}
System.out.println(str+sum);
sc.close();
System.out.println("프로그램종료");
-> 실행시켜 보니까 제대로 돌아가는데, 마지막 숫자를 잘못 입력하면 첫번째 숫자로 다시 돌아가서 첫번째 숫자부터 입력해야 하는 부분이 불편했다.
=>status 변수를 만들어서 마지막 숫자를 입력했을 때는 마지막 숫자만 다시 입력해서 이미 기입한 첫번째 숫자와 계산할 수 있게 바꾸었다.
public class Main_for {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String print = "";
int sum = 0;
int status = 1;
int start_num = 0;
int end_num = 0;
while (true) {
try {
if(status == 1) {
System.out.println("누적해야할 시작 숫자: ");
start_num = Integer.parseInt(sc.nextLine());
}
status = 2;
if(status == 2) {
System.out.println("누적해야할 마지막 숫자: ");
end_num = Integer.parseInt(sc.nextLine());
}
for (int i = start_num; i <= end_num; i++) {
if (i < end_num) {
print += i + "+";
} else {
print += i + "=";
}
}
} catch (NumberFormatException e) {
switch (status) {
case 1 :
System.out.println("올바른 정수를 입력하세요!!");
break;
default:
System.out.println("올바른 정수를 입력하세요!!");
status = 2;
}
continue;
}
sc.close();
break;
}
System.out.println(print + sum);
sc.close();
System.out.println("프로그램 종료");
}
}
status 말고 좋은 방법을 찾아냈으면 좋겠다!