이안의 평일코딩

JAVA의 정석 9일차 - 반복문 for 본문

Back-end/Java

JAVA의 정석 9일차 - 반복문 for

이안92 2020. 6. 25. 14:01
반응형

2020.06.25(목)

 

1. 반복문 - for, while, do~while
   === 프로그래머의 사용빈도
   for : 반복 횟수가 있는 경우에 주로 사용

      (for문은 일정한 패턴이 있어야함)
   while : 반복 횟수가 없는 경우에 주로 사용
   ===> for <=> while, 다중조건문  <=> 선택문
                 (언제든지 변경해서 쓸 줄 알아야함)
       do~while : 조건을 나중에 검색 => 한 번 이상은 반드시 수행
       
       1) for 형식
         1.1부터시작   2.10될떄까지  3.증가
         =======    ========  ===== 
        for(int i=1; i<=10; i++) {
        반복 수행문장 : 10번을 수행하는 문장
        }
        ==> 초기값, 조건식, 수행문장 수행, 증가식
         =====================> 반복
         = true => 반복
         = false => 종료
        ==> 실제 형식
        for(초기값 (변수) ; 조건(비교, 논리, 부정연산자) ; 증가(증감))
           => 반드시 (true/false)
        => 출력 ==> 1~10
        for(int i=1; i<=10; i++)
        출력 ==> 10~1
        for(int i=10; i>=1; 1--) ==> sort
       

        for(int i=1; i<=10; i++)

        System.out.println(i);


        => for 실행순서
               ①        ②         
        for(초기값; 조건식; 증감식) {
        반복 수행문장 
        }
        1 ==> 2 ==> 3 ==> 4
                 2 ==> 3 ==> 4
                 2 ==> 3 ==> 4

         === 1 초기값은 한 번만 실행됨
         === false가 될 때까지 반복
        주의점 : 조건식이 false가 없으면 => 무한루프가 된다

 

        2) for 형식 차이 

          for(초기화 ; 조건식 ; 증감식) {

               반복수행 문장

               실행문장

           }

             => 블럭 유무에 따라 결과가 달라짐

          for(초기화 ; 조건식 ; 증감식)

               반복수행 문장

               실행문장

         => 블럭이 있는 for문은 반복수행 문장, 실행문장 둘 다 반복되고,

              블럭이 없는 for문은 for문에 해당되는 반복수행 문장만 반복되며,

              실행문장은 1번만 출력되고 반복되지 않는다.

 

         3) for문 결과도출 후의 값

           int i

           for (i=1; i<=5; i++) {

            }

           i=? ->6이다. (6이되서 for문에서 빠져나갔기 때문에)

 

2. 자바제어문 활용

import org.jsoup.Jsoup;

import org,jsoup.nodes.Document;

import org.jsoup.select.Elements;

 

public class 자바제어문_활용 {

 public static void main(String[] args) throws Exception {

   Document doc=Jsoup.connect("https://movie.daum.net/premovie/released").get();

   System.out.println(doc;

   Elements title=doc.select("div.info_tit a.name_movie");

   Elements grade=doc.select("div.info_tit em");

   for(int i=0; i<title.size(); i++) {

              System.out.println("==============");

              System.out.println(title.get(i).text());

              System.out.println(grade.get(i).text());

              System.out.println("==============");

        }

   }

}

   

 

3. 연습문제

  1) 구구단

더보기

import java.util.*;

public class 구구단 {

 public static void main(String[] args) {

  Scanner scan = new Scanner(System.in);

  int dan = 0;

  System.out.print("단 입력 (2~9)>");

  dan = scan.nextInt();

  for (int i=1; i<10; i++)

  System.out.printf("%d*%D=%d\n",dan,i,dan*i

 }

}

 

 2) 1~100까지의 합

더보기

public class 합 {

 public static void main(String[] args) {

   //변수 ==> 1~100까지 더한 값 => 누적 (통계낼 때 사용)

 int sum = 0; // 누적 변수 (값을 누적함)

  // i ==> 루프변수 (반복해서 수행하는 변수)

 for (int i=1; i<=100; i++) {

 sum+=i // sum=sum+i

 System.out.printf("1부터 %d까지의 합:%d\n",i,sum);

   }

 }

}

 

sum = sum + i (sum=0, i=1) => sum=1

sum = sum + i (sum=1. i=2) => sum=3

sum = sum + i (sum=3, i=3) => sum=6

.

.

sum = sum + i (sum=4950, i=100) => sum=5050

 

 3) 1~100까지의 짝수, 홀수의 합

더보기

public class 짝홀수합 {

 public static void main(String[] args) {

  int odd=0, even=0;

  for (int i = 1; i<=100;, i++) {

      if(i%2==0)

         even+=i;

      else

         odd+=i;

  }

  System.out.println("짝수의 합:"+even);

  System.out.println("홀수의 합:"+odd);

 }

}

 

 4) 1~100까지의 3의 배수의 합, 5의 배수의 합, 7의 배수의 합을 출력

더보기

public class 배수합 {

 public static void main(String[] args) {

   int a3=0, a5=0, a7=0;

   for (int i=1; i<=100; i++) {

     // 충돌되는 것이 있으면 단일 if 써야함. 3,5,7의 배수가 서로 겹치기 때문에

   int (i%3==0)

       a3+=i;

   int (i%5==0)

       a5+=i;

   int (i%7==0)

       a7+=i; //합

   }

   System.out.println("3의 배수의 합"+a3);

   System.out.println("5의 배수의 합"+a5);

   System.out.println("7의 배수의 합"+a7);

 }

}

 

 5) 100~999까지의 7의 배수의 갯수

더보기

public class 배수갯수 {

 public static void main(String[] args) {

 int count = 0; //초기화를 하지 않으면 ++가 안됨.

 for (int i=100; i<=999; i++) {

      if (i%7==0)

         count++;  //갯수

 }

 System.out.println("7의 배수의 갯수"+count);

 }

}

 

 6) 1-2+3-4+5-6+7-8+9-10 값 출력

더보기

public class 값출력 {

 public static void main(String[] args) {

 int sum = 0; //홀수일 때 더하기, 짝수일 때 빼기

 for (int i=1; i<=10; i++) {

      if (i%2==0)  //짝수

         sum-=i;

      else            //홀수

         sum+=i;

  }

  System.out.println("1-2+3-4+5-6+7-8+9-10:"+sum);

 }

}

 

 7) ★★☆★★☆★★☆★★☆★★☆ 출력

더보기

public class 패턴출력 {

 public static void main(String[] args) {

  //초기값 주의 int i = 0; i<12로 하면 3의 배수에 0이 포함되므로 순서가 바뀌게 됨.

for (int i=1; i<=12; i++) {

     if(i%3==0)

        System.out.print("☆");

     else

        System.out.print("★");

   }

 }

}

 8) 대소문자출력

더보기

public class 대소문자출력 {

 public static void main(String[] args) {

  char ch;

  for (ch='A'; ch<='Z'; ch++) {

     System.out.print(ch);

     }  //{} 블럭을 쓰면 변수 ch는 메모리에서 사라진다

     // ch=90 ==>

  System.out.print((char)('Z'+1));

  System.out.print(ch); //다음문자 확인

  System.out.println();

  for (ch='a'; ch<='z'; ch++) {

     System.out.print(ch);

     }

  System.out.println(ch); //{

 

  for(int i = 10; i>=1; i--) {

      System.out.print(i);

  }

  System.out.println();

  System.out.println("==============");

  for (int i=1, j=10; i<=10; i++,j--) {    //변수는 2개 있어도 되지만 조건식은 1개만 써야함

       System.out.println("i="+i+",j="+j);

  }

 }

}

 

 9) updown 게임

 => 컴퓨터가 1~100 사이의 난수 발생

 => 사용자가 난수 맞추는 게임

   힌트 => 높다, 낮다

   => 난수: 70

   => 사용자: 60 => 높은 숫자 입력하세요

   => 사용자: 75 => 낮은 숫자 입력하세요 

더보기

 1. 컴퓨터가 난수 발생 (1~100)

Math.random()

0.0~0.99*100 ==> 0.0~99.0 + 1
 *      (int)1.0~100.0
 * ================ 2,3,4반복
 * 2. 사용자 입력
 * 3. 입력하면 => 힌트
 * 4. 종료여부
 * ================

 

import java.util.*;

public class updown게임 {

 public static void main(String[] args) {

 int com=(int)(Math.random()*100)+1; // 1~100사이 난수

   // 난수 => 임의 수를 추출

 Scanner scan = new Scanner(System.in);

 int count=0;

 for(;;) // 무한루프 => while(true)

 {

       //사용자 입력값을 받는다

       System.out.print("1~100사이의 정수 입력:");

       int user=scan.nextInt();

       if(user<1 || user>100) {

           System.out.println("잘못된 입력입니다!!");

           continue; // 처음으로 다시 돌아간다

           // for ==> 증가식으로 이동

       }

 

       // 정상적으로 입력이 된 상태

       count++;

       // 비교

       if(com>user) {

           System.out.println("입력된 값보다 높은 수를 입력하세요");

       }

       else if(com<user) {

           System.out.println("입력된 값보다 낮은 수를 입력하세요");

       }

       else {

           System.out.println("Game Over!!");

           System.out.println("입력횟수:"+count);

           // 종료

           break; // for종료

       }

     }

   System.out.println("프로그램 종료");

 }

}

 

 10) AaBbCcDd...Zz 출력

더보기

char c='a';

for(char ch='A'; ch<='Z'; ch++) {

    System.out.print(ch+""+c++);

}

더보기

 

for(char ch='A'; ch<='Z'; ch++) {

    System.out.print(ch+""+(char)(ch+32));

}

더보기

char c='a';

for(char ch='A'; ch<='Z'; ch++) {

    System.out.print(ch+""+c);

    c++;

}

 

 11) 1,2,3,4,5 출력

더보기

for (int i=1; i<=5; i++) {

    System.out.print(i);

      if (i<5)

    System.out.print(",");

}

 

 12) 10->2진법

더보기

int su=10;

String s="";

for(;;) { //무한루프

    int a = su%2;

    s+=a+"";

    su=su/2;

    if(su==0)

        break;

 }

 for (int i=s.length()-1; i>=0; i--) {

      System.out.print(s.charAt(i));

 }

반응형
Comments