반복문
1. for(초기값;조건식;증감식)
{
문장
}
==>반복 횟수가 정해져 있는 경우에 많이 사용(예:배열)
==>for문의 초기값 선언(ex.int i=0)해줬을 경우 해당 for문을 벗어나면 함수에서 다시 사용가능
=> 조건식이 처음부터 안맞다 하더라도 한 번은 실행(후조건)
break label: break (이름):
label이 선언된 반복문을 빠져나온다(한꺼번에 두 개 이상도 탈출가능)
package sist0621;
import java.util.Scanner;
public class ExWhile_02 {
public static void main(String[] args) {
//while문으로 1부터 10까지출력
int n=0;
while(n<10)
{
n++; //증가하고
System.out.printf("%4d",n); //출력
}
System.out.println();
//다른 방법
n=0; //위에 이미 int n=0; 선언했기에 n을 다시 초기화
while(n<10)
{
System.out.printf("%4d",++n); //n++과 결과값이 다름
//++n은 증가시키고 출력/n++은 출력하고 증가
}
//첫번째 while과 같은 식
System.out.println();
n=0;
while(true)
{
System.out.printf("%4d",++n);
//무한루프에 빠지므로 반드시 break문을 주어야 한다
if(n==10)
break;
}
System.out.println();
n=0;
while(++n<=10) //n증가하고 출력문장
{
System.out.printf("%4d",n);
}
}
}
package sist0621;
public class ExWhile_03 {
public static void main(String[] args) {
//while for 비교
//10 9 8 7 6 5 4 3 2 1 0
int i=10;
while(i>=0)
{
System.out.print(i--+" ");
}
System.out.println();
for(int a=0;a>=0;a--)
System.out.print(a+" ");
System.out.println();
//이미 위에 int i=1o; 선언후 while문과 for문을 사용했기 때문에
//다시 for문에 사용하기위해서는 i=10;으로 초기화
i=10; //for문 초기식에서 밖으로 빼도 되지만 for(;)은 그대로 둬야한다
for(;i>=0;i--) //초기식 빼도 맨 앞에 ;은 둬야한다//혹은 초기식에서 초기화해줘도 됨(i=0;i>=0;i--)
//전역에 int i는 선언해줬을 경우
System.out.print(i+" ");
}
}
while(true)
{
System.out.println("Java"+i);
i++;
//break;
if(i==10)
break;
}
while(true)문은 참일때 무한으로 돌기 때문에 break;필수
package sist0621;
public class ExWhile_04 {
public static void main(String[] args) {
//while 조건문 true문 비교
//while true문은 무한 반복이기 때문에 break;필수
int i=1;
while(i<10)
{
System.out.println("Java"+i);
i++;
}
System.out.println("종료");
i=1;
while(true)
{
System.out.println("Java"+i);
i++;
//break
if(i==10)
break;
}
}
}
package sist0621;
public class DoWhile_06 {
public static void main(String[] args) {
int i=1;
System.out.println("while문 결과");
//선조건 => 조건이 먼저 온다..참일 동안 실행
while(i<5)
{
//출력 후 증가
System.out.println(i++);
//위 식과 같은
//System.out.println(i++);
//i++;
}
System.out.println("do while문 결과");
//후조건 => 조건 나중에 온다. 조건 안맞아도 한 번은 실행
i=1;
do{
//출력 후 증가
System.out.println(i++);
}while(i>5);
}
}
package sist0621;
public class ExFor_05 {
public static void main(String[] args) {
//for문
//1~10까지 가로로 출력
for(int i=1;i<=10;i++)
System.out.print(i+" ");
System.out.println();
//10~1까지 가로로 출력
for(int i=10;i>=0;i--)
System.out.print(i+" ");
System.out.println();
//1~50까지를 출력하는데 3씩 증가하게...
//1 4 7.....
for(int i=1;i<=50;i+=3)
System.out.print(i+" ");
System.out.println();
//continue
//1~20까지 출력하는데 1 2 3 4 6 7 8 9 11 12 ...20
for(int i=1;i<=20;i++)
{
//continue를 만나면 수행을 안하기 때문에 조건 먼저 설정
//continue는 해당 조건 스킵
//5의 배수를 빼고 출력
if(i%5==0)
continue; //i++로 이동/반복문 탈출안하고 해당조건만 스킵
//break; //반복문 탈출
System.out.print(i+" ");
}
}
}
초기식 조건식 안맞으면 한 번도 실행안함
for(int i=5;i<=1;i++)
System.out.println(i);
package sist0621;
public class ExFor_07 {
public static void main(String[] args) {
//초기식 조건식 안맞으면 한 번도 실행안함
for(int i=5;i<=1;i++)
System.out.println(i);
int i;
for(i=1;i<=10;i++)
System.out.print(i+" ");
System.out.println("\n빠져 나온 후의 i값: "+i); //변수 앞에 뺐을 경우 사용 가능
int a=10;
for(;a<=50;a+=5) //초기값을 반복문 밖으로 주었을 경우 생략가능(;은 써야함)
System.out.print(a+" ");
System.out.println("\n빠져 나온 후의 a값: "+a);
//Hello를 가로로 5번 반복하시오
for(int n=1;n<=5;n++)
System.out.print("Hello ");
System.out.println();
System.out.println("1부터 10까지의 숫자 중 짝수만 가로로 출력하기");
for(int n=1;n<=10;n++)
{
if(n%2==1)
continue;
System.out.print(i+" ");
/*
if(n%2==0)
System.out.print(i+" "); */
}
}
}
int sum=0;
for(int i=1;i<=10;i++)
{
sum+=i; //i를 합계변수(sum)에 누적해준다//sum=sum+i;
/ i=1 sum=1
i=2 sum=3
i=3 sum=6
...*/
}
sum이라는 변수에 i값을 하나씩 넣어줘서 합을 구할 수 있다
package sist0621;
public class ForSum_08 {
public static void main(String[] args) {
//for문으로 합계구하기
//1~10까지 합
int sum=0; //합계 구하는 변수
for(int i=1;i<=10;i++)
{
sum+=i; //i를 합계변수(sum)에 누적해준다//sum=sum+i;
/* i=1 sum=1
* i=2 sum=3
* i=3 sum=6
* ...*/
}
System.out.println("1부터 10(=i-1)까지의 합은 "+sum+"입니다");
//i-1로 해주고 싶으면 for문 전에 int i=1 선언해줘야 for문을 나와도 사용가능
int tot=0;//더해주기 위한 박스
//조건이 맞으면 증가하면서 하나씩 더 해줌
int i=1;
while(i<=10)
{
tot=tot+i;
i++;
}
System.out.println("1부터 10까지의 합은 "+tot+"입니다");
//결과 출력시 1~10까지의 합은 55입니다
int total=0;
int a=1;
for(;a<=5000;a++)
total+=a;
System.out.println("1에서 "+(a-1)+"까지의 합은 "+total);
}
}
package sist0621;
public class QuizFor_09 {
public static void main(String[] args) {
//Q.1 2 4 5 7 8 10 _continue이용해서 출력
for(int i=1;i<=10;i++)
{
if(i%3==0)
continue;
System.out.print(i+" ");
}
System.out.println();
/*Q. continue이용할것!!
* 홀수값: 1
* 홀수값: 3
* 홀수값; 5
* 홀수값: 7
* 홀수값: 9 */
for(int i=1;i<=10;i++)
{
if(i%2==0) //짝수
continue; //스킵
System.out.println("홀수값: "+i);
}
System.out.println();
//1~100까지 중에서 홀수의 합을 구하시오
int tot=0; //홀수 합계 구할 변수
int etot=0; //짝
for(int i=1;i<=100;i++)
{
if(i%2==1)
tot+=i;
else
etot+=i;
}
System.out.println("1~100까지 중에서 홀수의 합은 "+tot);
System.out.println("1~100까지 중에서 짝수의 합은 "+etot);
//while(true)문을 이용해서 1~100사이의 짝수 합 구하기
int etotal=0;
while(true)
{
int i=1;
while(i<=100)
{
if(i%2==0)
{
etotal+=i;
}
i++;
}
break;
}
System.out.println("짝수의 합은 "+etotal);
//선생님
int a=0;
int sum=0;
while(true)
{
a++; //++a;로 해도 a=0;으로 시작해서 상관x
if(a%2==0)
sum+=a;
/* 위와 같은 식
if(a%2==1)
continue;
sum+=a; */
if(a>100)
break;
}
System.out.println("짝수의 합은 "+sum);
}
}