본문 바로가기
Study/Java

03. <제어문, 화면으로부터 입력받기> ~자바의 정석 summary ~

by 하구땡 2023. 1. 10.
반응형

9.제어문(control statement)

*[1]조건문-조건에 따라 다른 문장이 수행되도록 함

*[2]반복문-특정 문장들을 반복해서 수행하도록 함

           9-1.조건문 (if, switch)

  ①if..문 =>만일 조건식이 참이면 괄호안의 문장들을 수행하라.

    [기본형]
           if(조건식) {
                      //조건식이 참일 때 수행될 문장
        }
    [if-else문]
           if(조건식) { //조건식이 참일 때 수행될 문장
        } else {           //조건식이 거짓일 때 수행될 문장
        }
    [if-else if문]
           if(조건식) {
           } else if(조건식) { //여러개의 else if사용 가능
           } else {                    //else블럭 생략 가능
          }
    [중첩 if문]
              if(조건식1) {
                         if(조건식2) { //조건식 1과 2가 모두 true일 때 수행될 문장
                         } else {           //조건식1 true, 조건식2 false
              }
              } else {           //조건식1이 false일때 수행될 문장
              }

 

  ②switch문

    (1)조건식을 먼저 계산한 후, 결과와 일치하는 case문으로 이동

    (2)이동한 case문 아래에 있는 문장들을 수행

    (3)break문을 만나면 전체 switch문 탈출

    [기본형]
              swtich(조건식) {
                 case값1 : 
                // 조건식의 결과가 값1일 경우 수행될 문장
                            break;
                 case값2:
                // 조건식의 결과가 값2일 경우 수행될 문장
                            break;
                 default:    // if문의 else블럭과 같은 역할
}

 *switch문의 조건식은 결과값이 정수 또는 문자열이어야 한다.

 *case문의 값은 정수, 상수(문자 포함), 문자열만 가능하며 중복되지 않아야 

한다.

           ex17.

switch(result) {
case ’1’:                      //O, 문자 리터럴(=정수 49와 동일)
case ONE:                      //O, 정수 상수
case “YES”:                      //O, 문자열 리터럴
case num:                      //X, 변수 불가
case 1.0:                      //X, 실수 불가
}

 

           9-2.반복문 (for, while, do-while)

①for문=>반복횟수를 알고 있을 때 사용

  *기본 구조:

        for(초기화;조건식;증감식) { ///괄호안의 내용을 조건식대로 반복

                      // 조건식이 참(true)인 동안 수행될 문장

           }

  *실행순서:초기화->조건식->수행될 문장->증감식->조건식->수행될 문장..

               (초기화는 첫 실행시 단 한번만 진행한다.)

  *조건식이 거짓이면 반복을 중단하고 for문을 벗어난다.

  *중첩for문 사용시 첫 for문은 열(↓)로 나열하고,

   두 번째 for문은 행(→)으로 나열한다.

           ex18.

for(int i=1; i<=5; i++) {
   for(int j=1; j<=10; j++) {
     System.out.print(”*”);
   }
  System.out.println();               // 한 줄, 열 개의 *가 끝나면 줄바꿈
}
**********
**********
**********
**********
**********

           (1-1) 향상된 for문

for (타입 변수명 : 배열 또는 컬렉션) {

 - 일반적인 for문과 달리 배열이나 컬렉션에 저장된 요소들을 읽어오는 용도로만 사용할 수 있다.

  => for(int tmp : arr)

}

②while문=>조건식이 참인 동안, 거짓이 될 때 까지 블럭내의 문장 반복

  *기본 구조:

           int i=1;

           while(조건식) {

                      //조건식이 참일 동안 반복될 문장

           }

  *while문은 바로 윗줄에 변수 선언 해주어야 함.

③do-while문=>블럭을 먼저 수행한 후에 조건식을 평가한다.

  *기본 구조:

           do {

                      //조건식이 참일 때 수행될 문장(처음 한 번은 무조건 실행)

            } while(조건식);

④break문=>자신이 포함된 가장 가까운 반복문을 벗어난다.

           ex19.

int sum=0;
int i=0;
   while(true) {
      if(sum>100)
         break;
      ++i;
      sum+=i;
   } //end of while
System.out.println(”i=”+i);
System.out.println(”sum=”+sum);
i=14
sum=105

 

 *여러개의 반복 중첩문의 경우 break 만으로 반복 중첩문을 완전히 벗어날 수 

없다. =>중첩 반복문 앞에 이름을 붙이고 break문과 continue문 이름을 정해줌

으로써 하나 이상의 반복문을 벗어나거나 건너뛸 수 있다.

           ex20.

Loop1:for(int i=2; i<=9; i++) {
           for(int j=1; j<=9; j++) {
              if(j==5)
            break Loop1;
         System.out.println(i+”*”+j+”=”+i*j);
       }
    System.out.println();
}
2*1=2
2*2=2
2*3=6
2*4=8

 

⑤continue문=>반복문 진행 중 continue문을 만나면 반복문의 끝으로 이동

 *for문-증감식으로 이동

 *while, do-while문-조건식으로 이동

 *break와 달리 반복문 전체를 벗어나지는 않기 때문에, 전체 반복 중에서

  특정 조건을 만족하는 경우를 제외하고자 할 때 유용하다.

 

10.임의의 정수=>Math.random()

*math.random() : 0.0과 1.0사이의 범위에 속하는 하나의 double값을 반환

*0.0≤math.random()〈1.0 (0.0은 포함되나, 1.0은 포함되지 않음)

           (1)math.random()*10 : 0.0과 10.0사이의 double값

           (2)(math.random()*10)+1:1.0과 11.0사이의 double값

           (3)(int)(math.random()*10+1):1과 10사이의 int값

           (4)(int)(math.random()*45):0과 44사이의 int값

           ex21.

int num=0;
     for(int i=1; i<-5; i++) { //괄호안의 내용을 5번 반복한다.
        num=(int)(math.random()*6)+1;
          System.our.pirnt(num+” “);          
     }
6 1 1 5 2

 

11.화면으로부터 입력받기

           ex22.

import java.util.Scanner;
 
clasee Ex2_10 {
   public static void main(String[] args) {
      Scanner scanner=new Scanner(System.in);
 
      System.out.print(”두 자리 정수를 하나 입력해주세요.>”);
      String input=scanner.nextLine();
      int num=Integer.parseInt(input);
 
      System.out.println(”입력내용:”+input);
      System.out.printf(”num=%d%n”, num);
   }
}
두 자리 정수를 하나 입력해주세요.>22
입력내용:22
num=22

Scanner클래스를 사용하여 사용자로부터 입력받는다.

=> 이와 같은 경우 받은 값에 대한 형변환이나 유효성 검사를 해주는 것이 좋다.

nextLine(); : 값을 입력하고 엔터를 치면 값을 받아들인다.

반응형

댓글