자바-이클립스 5일차

최성현·2023년 6월 21일
0

Java

목록 보기
7/46

선생님정리

반복문
1. for(초기값;조건식;증감식)
{
문장
}
==>반복 횟수가 정해져 있는 경우에 많이 사용(예:배열)
==>for문의 초기값 선언(ex.int i=0)해줬을 경우 해당 for문을 벗어나면 함수에서 다시 사용가능

  1. while(조건식)
    {
    문장;
    }
    => 조건이 참일 동안 반복실행...조건이 안맞으면 한 번도 실행안함(선조건)
  2. do
    {
    문장;
    }while(조건식);

=> 조건식이 처음부터 안맞다 하더라도 한 번은 실행(후조건)

  1. break;
    현재 속한 반복문을 빠져나간다

break label: break (이름):
label이 선언된 반복문을 빠져나온다(한꺼번에 두 개 이상도 탈출가능)

  1. continue;
    반복문에서 continue를 만나면 남은 코드를 실행하지 않고
    조건식(while) 증감식(for)문으로 이동한다

for/while/while(true) 예제

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);
		}
	}

}

while문/for문 비교

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문 비교

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;
		}

	}

}

while/do~while 비교

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);

	}

}

for문 출력예제+continue

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문 문제/작동 안하는 경우

초기식 조건식 안맞으면 한 번도 실행안함
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+" "); */
		}
			
		
	}

}

for문 sum

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);
		
	}

}

for문 응용문제

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);
		
	}

}
profile
백엔드 개발자로서 성장해 나가는 성현이의 블로그~

0개의 댓글