이안의 평일코딩

JAVA의 정석 10일차 - 반복문 while 본문

Back-end/Java

JAVA의 정석 10일차 - 반복문 while

이안92 2020. 6. 26. 09:58
반응형

2020.06.26(금)

 

1. while문

 => 무한루프 (데이터베이스 (오라클), 파일 읽기, 서버제작, 게임)

                    => 파일: XML, JSON

                    => break(종료)

 형식)

          초기값 ======= 1

          while(조건식) { == 2 ==> true => {안에 있는 내용 수행} / false => 종료

              반복수행문장 = 3

              증가식       == 4 ==> 조건식 비교

          }

 

 예제) 1~10 정수를 출력

         1) 1~10까지 변경되는 변수 => 루프변수

            int i = 1; // 시작=> 1

            while(i<=10) { // => 10될 때까지

               System.out.println(i);

               i++; // i=2 ==> i<=10 ... i=11 i<=10 false => 종료

                      // 증감없으면 무한루프가 됨

            }

 

 1) 초기값 설정 i=1

    어디까지 수행 -> 조건식 i<=10 (i가 10이 될 때까지)

    i를 어떻게 변경 -> i++, i+=2, i+3.....

 

 2) 정수값을 받아서 -> 받은 정수 갯수만큼 ★을 출력 // 변수 2개 필요 (증가 loop변수 필요)

더보기

import java.util.*;

public class 반복문_while {

 public static void main(String[] args) {

   int user=0;

   int i=1; //  사용자가 요청한 값까지 변경할 변수 => while에서 사용하는 변수

 

  // 정수값을 받는다

   Scanner scan = new Scanner(System.in);

   System.out.print("정수 입력:");

   user=scan.nextInt();

 

   while(i<=user) {

      System.out.print("★");

      i++;  // user의 갯수가 될 때까지 루프 실행

   }

 }

}

 

 3) 사용자가 알파벳을 입력하면 B ==> AB

     D => ABCD

     char ===> scan.next().charAt(0)

     "ABCDE" ==> scan.next()

      'A' => charAt(0)

      'B' => charAt(1)

더보기

import java.util.*;

public class 반복문_while {

 public static void main(String[] args) {

   char user=' ';  // while ==> 조건이 false될 때까지 변경하는 변수 : 루프변수

   char c='A';

 

   Scanner scan = new Scanner(System.in);

   System.out.print("알파벳 입력(대문자) :");

   user=scan.next().charAt(0);

 

   while (c<=user) {

      System.out.print(c);

      c++

   }

 }

}

 

* 참조형 변수 : 배열, 클래스 (<->기본형 변수)

   (1) 문자열 저장 변수 -> String

    형식) char c = 'A' -> 문자 한개만 저장

           String s = "ABCDEFG" -> 웹, 윈도우 (모든 데이터 문자열)

           ==== =

        데이터형 변수

            -> String : 클래스

                기능 (Java에서 제공)

                 -> 문자 갯수 // (비밀번호 입력 값 갯수, 문자메시지 일정 길이 넘으면 mms로 전송, 자소서 글자수 제한)

                      String s = "ABCDEF";

                      s.length() => 6

                 -> String s = "ABCDEF";

                      s.charAt(0) => 'A'

더보기

import java.util.*;

public class 반복문_while3 {

 public static void main(String[] args) {

  String s=""; //문자 여러개 저장

  Scanner scan = new Scanner(System.in);

  System.out.print("문자열을 입력하세요>");

  s=scan.next(); //String으로 받은 값을 저장

      // scan.next()는 공백이 들어가면 끊어지고

         scan.nextLine()는 공백이 들어가도 공백포함 갯수 읽어옴 => 띄어쓰기해도 가능

  System.out.println(s);

  System.out.println("갯수:"+s.length());

 

   

 }

}

 

 4) 사용자 문자열을 입력

    대문자 갯수, 소문자 갯수 확인

더보기

import java.util.*;

public class 반복문_while3 {

 public static void main(String[] args) {

  String s=""; 

  Scanner scan = new Scanner(System.in);

  System.out.print("문자열을 입력하세요>");

  s=scan.next(); 

  

  int a=0,b=0;

    // a => 소문자 갯수

    // b => 대문자 갯수

  int i=0; // 문자의 갯수만큼 증가하는 변수 => 루프변수

  

   // ABCDEFG => 7개지만 0번부터 시작하기 때문에 

   // 0123456        while i <= 이 아닌 while i < s.length() 여야함

 

 // AbCdeFG

  while(i < s.length()) {

     char c = s.charAt(i);

     if(c >= 'A' && c <= 'Z')

     b++; // 갯수 확인 ==> 합 +=

     if(c >= 'a' && c <= 'z')

     a++;

 

     i++;  

     }

     System.out.println("대문자 갯수:"+b);

     System.out.println("소문자 갯수:"+a); 

 }

}

 

 5) 주의점

   (1) while문 조건이 없는 경우 error남 => for(;;)는 무한루프로 error는 안남

      while() {=> 조건식이 없다

      } ====> 오류발생

   (2) while에서 무한루프

       => for(;;) => while(true) 가장 많이 등장

 

   (3) for문과 while문

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

                vs

        int i = 0;

       while(i<10) {

         i++

       }

   (4) 반대로

       int i = 5;

       while(i >= 0) {

            System.out.println(i);

            i--;

        }

 

 6) 변수설정

더보기

public class 변수설정 {

 public static void main(String[] args) {

  String title="#살아있다(2020)";

   // System.out.println("영화명:"+title)

  boolean isOpen=true;

   // System.out.println(" "+(isOpen==true?"상영중":"미개봉"))

  double score=6.7;

  String na="한국";

  String genre="";

  String regdate="2020.06.24";

   // System.out.println("개봉일:"+regdate+"개봉");

  String director="조일형";

  String actor="유아인,박신혜";

  int time=98;

   // System.out.println("시간:"+time+"분");

  int grade=15;

  int rank=1;

  int showUser=357069;

 

 7) 변수사용범위

   변수 Scope

   ========

  * 변수 종류

    (1) 지역변수

    (2) 멤버변수

    (3) 공유변수

 

   public class A {

      int a:  -> 멤버변수 // 클래스 A가 저장이 될 때마다 생성

      static int b;  -> 공유변수 // JVM class를 로드할 때

      public static void main(String[] args) {

          int c;  -> 지역변수 (각 블럭을 넘어가면 사라지는 변수)

      } // c변수 -> main에서만 사용이 가능

   }

 

  System.gc(); // 메모리 회수 (가비지컬렉션)

 

2. do~while문

  형식) 초기값 ①

          do ②{ 

                 수행문장 ③

                 증가식 ④

          } while(조건식); ⑤   //증가한 다음 조건식

 

  예시) int i=1;

          do {

             i++;

          } while(i<=5);

         i=1 -> i=2 i<=5

         i=2 -> i=3 i<=5

         i=3 -> i=4 i<=5

         i=4 -> i=5 i<=5

         i=5 -> i=6 i<=5 --> false

 

* for문  vs  while문  vs  do~while문

더보기

int i=1;

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

   System.out.print(i+" ");

}

 

====================

 

i=1;

while(i<=5) {

   System.out.print(i+" ");

   i++;

}

 

====================

 

i=1;

do {

   System.out.print(i+" ");

   i++;

}while(i<=5);

 

3. 연습문제

 1) 입력한 수 만큼 합계 => 변수 3개(user, i, sum)

더보기

import java.util.*;

public class 합계 {

 public static void main(String[] args) {

 int user = 0; //사용자가 받는 변수

 int i = 1; //증가되는 변수(루프변수), 1부터 시작되서 증가하므로 1로 설정.

 int sum = 0; //누적(합)

 

 Scanner scan = new Scanner(System.in);

 System.out.print("정수 입력>");

 user = scan.nextInt();

   // user = 5

 while(i<=user) {

     sum+=i;

     i++;

 }

 System.out.print("sum="+sum); //최종결과값만 보기위해 while문 밖에서.

   // i = 6 (5까지 출력하고 6이 되어 조건 false되서 빠짐)

 i = 1; //초기화 시켜서 새로운 변수대신 재사용하면 됨

 }

}

 

반응형
Comments