반응형

**파이썬 콘솔 입력

input('메시지') 를 호출하면 한 줄의 텍스트를 입력받고 리턴해주는 함수

 

name = input('이름을 입력하세요');

 

**문자열 데이터를 숫자로 변경하기

int('정수 문자열') : 정수로 변환되서 리턴

float('실수 문자열') : 실수로 변환되서 리턴

 

하나의 정수를 입력받기

n = int(input('정수를 입력하세요')) # 별로 좋지 않은 방법

=>이것은 좋지 않는 방법이다.

함수나 메소드는 독립적으로 하는 것이다.

함수에 함수를 호출할 경우는 늦어진다.

함수 안에 함수 일 경우는 재귀

 

s = input('정수를 입력하세요');

n = int(s);

 

inp = input('정수를 입력하세요') #한줄의 문자열을 입력받아

n = int(inp) #정수로 변환하기

print(type(n)) #자료형 확인

 

**파이썬의 제어문

=>제어문은 하나의 블록

코드:

           내부코드

           내부코드

블록과 상관없는 코드

 

 

1.    분기문(갈림길)

if 표현식:

      표현식의 내용이 True 일 때 수행할 내용

elif 표현식:

      앞의 표현식이 False이고 자신의 표현식이 True일때 수행할 내용

elif 중복 작성 가능

else:

      앞의 모든 표현식이 거짓일 때 수행할 내용

 

=>표현식은 데이터가 만들어지면 전부 표현식입니다.

=>True,False가 아니더라도 파이썬에서는 bool로 간주하는 경우가 있는데

숫자 데이터는 0이 아니면 True 이고 0 False로 간주

숫자 이외의 데이터는 데이터가 존재하면 True데이터가 없으면 False

데이터가 없다는 것은 변수 = None

없는 변수 이름을 사용하면 에러 -Undefined입니다.

=>elif else는 상황에 따라서 생략 가능

=>elif 중복 가능하지만 else1번만 나와야 합니다.

 

1.    하나의 문자열을 입력받아서 남자라고 입력하면 man이라고 출력하고 여자라고 입력하면 woman이라고 출력하고 그 이외의 경우는 잘못된 입력이라고 출력해주는 문제

 

person = input("성별을 입력하세요")

if person == '남자':

      print('man')

elif person == '여자':

      print('woman')

else:

      print('잘못 된 입력')

 

연습 : 정수 한개를 입력받아서 3000 이상이면 대형차

        2000- 2999이면 중형차

        그 이외의 경우는 소형차라고 출력

 

inp = input('정수를 입력하세요')

n = int(inp) #정수로 변환하기

if n >= 3000:

    print("대형차")

elif n>= 1000 and n <= 2999:

    print("중형차")

else:

print("소형차")

 

 

 

정수 한개를 입력받아서 3000 이상이고 7000 이면 대형차

        2000- 2999이면 중형차

      1000- 1999 이면 소형차라고 출력

      나머지 경우는 이상한 배기량이라고 출력

 

inp = input('정수를 입력하세요')

n = int(inp) #정수로 변환하기

if n >= 3000 and n <= 7000:

    print("대형차")

elif n>= 2000 and n <= 2999:

    print("중형차")

elif n>= 1000 and n <= 1999:

    print("소형차")

else:

print("이상한 배기량")

 

2.    while -반복문 (Loop, Iterator)

while 표현식:

            표현식이 False가 아니라면 수행할 내용

           =>while은 대부분의 경우 몇 개 인지 알 수 없을 때 사용하는 반복문

실제 while을 사용하는 대부분의 경우는

 

while True:

           if 표현식:

                       break

           반복 수행할 내용

 

파일에 7줄인지 아는 것은 처음 읽고 있으면 읽어라 없으면 그만하라 이런식으로 읽는다.

한줄 씩 가져와서 더이상 읽을 것 없으면 나완다.

7줄인지 아면 for사용하고 몰라서 while이다.

 

 

3.    for - 반복문 (Loop , Iterator)

=>반복할 횟수를 알거나 데이터의 모임을 순회할 떄 사용

for 임시변수 in 데이터의 모임:

            반복할 내용

=>데이터의 모임에서 하나씩 순서대로 꺼내서 임시변수에 대입하고 내용을 반복

=>데이터의 모임인지 확인하는 방법 : dir을 이용해서 사용가능한 속성 중에서 __iter__가 있으면 이 데이터는 순회가능한 데이터의 모임

 

 

li = [100,200,300]

 

for imsi in li:

            print(imsi)

 

li = [100,200, 300]

print(dir(li)) #__iter__

li = [100,200, 300]

#print(dir(li)) #__iter__

for imsi in li:

    print(imsi)

 

 

 

4.    range

range(시작값, 종료다음 값, 간격) : 시작값 부터 간격 단위로 종료값까지 순회하는 순서열을 생성해서 리턴해준다.

 

print(dir(range(0,10,1)))

 

 

 

 

for imsi in range(0,10, 1):

print(imsi)

 

range(종료다음값): 시작값은 0으로 간격은 1로 설정을 해줍니다.

 

연습문제 1) while을 이용해서 아래와 같은 문장을 출력(신문기사 패턴)

i = 1

while i <= 3:

    print("article",i)

i = i+1

 

 

연습문제 2) for를 이용해서 아래와 같은 문장을 출력

num = 1

num = 16

num = 31

num = 46

for  i in range(1, 5, 1) :

    print("num=" , 15 * i - 14)

 

for  i in range(0, 4, 1) :

print("num=" , 15 * i +1)

 

 

 

=>위와 같은 형태를 출력해보는 이유는 웹에서 데이터를 수집할 때 많은 양의 데이터는 대부분 페이징 처리가 되어 있어서 페이지에 해당하는 URL패턴을 찾아서 프로그램에서 수집할 수 있도록 해주어야 합니다.

 

https://kin.naver.com/search/list.nhn?query=%ED%8C%8C%EC%9D%B4%EC%8D%AC&page=2

https://kin.naver.com/search/list.nhn?query=%ED%8C%8C%EC%9D%B4%EC%8D%AC&page=3

 

 

5.    제어문의 중첩

=>제어문 안에 제어문 사용이 가능

 

6.    break continue

1)    break: 가장 가까운 반복문을 종료하는 제어문

2)    continue: 가장 가까운 반복문의 다음 수행으로 이동하는 제어문

ð  반복문 안에서 if와 함께 사용

ð  파이썬에서는 반드시 if 와 함께 사용

 

for i in range(1,4, 1) :

      if i % 2 == 0:

                 break;

print(i)

ð  짝수가 되면 반복문을 중단하는 것이므로 1만 출력

 

for i in range(1,4, 1) :

      if i % 2 == 0:

                 continue;

print(i)

ð  짝수가 되면 다음 반복으로 넘어가라는 의미이므로 1,3 출력

 

데이터 수집 같은 것들을 할 때 특정 조건을 만날 때 까지만 수집

회사이름으로 올라온 신문기사를 스크랩할 것인데 오늘 날짜에 해당하는 기산만 스크랩하고 하는 경우에는 조건을 만들어서 break를 시켜 주어야 합니다.

 

댓글 수집을 하는 경우 하나의 아이디가 여러 개의 댓글을 남겼다면 이런 경우는 첫번째 데이터만 읽고 나머지는 패스 해버려야 합니다.

이런 경우는 continue를 사용합니다.(조작할 가능성이 높기 때문이다.)

 

똑같은 것이 있으면 댓글 달면 두개씩 똑같은 것있으면 다음으로 넘어가라 continue를 사용한다.

광고에서는 똑같은 ip에서 글이 두개 이상 있으면 읽지 말아라

break는 이것은 하지 말자 : 중복이다.

 

7.    for ~ break ~ else

for 표현식:

      if 표현식:

                 break:

else:

      수행할 내용

=>elseforbreak에 걸리지 않고 전부 수행한 후 종료되었을 때 수행할 내용

for i in range(1,4,1):

           if i % 2 == 0:

                       break

else:

           print("반복문을 전부 수행")

 

ð  이 경우는 2에서 break를 만나서 반복문이 종료되었으므로 else내용을 수행하지 않음

반복문을 수행하다가 문제가 생겼다면 멈춰라

 

 

for i in range(1,4,1):

           if i % 4 == 0:

                       break

else:

           print("반복문을 전부 수행")

 

ð  이 경우는 break를 만나지 않고 반복문이 종료되었으므로 else 내용을 수행

반복문을 수행하다가 문제가 생기지 않았다면 계속 하라

 

이 두가지 경우는 머신러닝은 아니지만 업무 상으로 한다.

이런것은 연차 를 사용하는 것은 매일 찍다가 안 찍으면 쉴 수 없다.

게임은 출석 이벤트 할 경우 1주일 연속 나오면 뭐 주는 것 등 ...

분석은 사용한지 별로 없다.

하지만 구글 analystice에서는 해준다.

 

 

** Function(함수)

=>자주 사용하는 코드를 독립적인 모듈로 만들어 둔 것

=>별도의 메모리 영역을 할당 받아서 코드를 실행

 

1.    종류

1)    Maker Function : 처음부터 제공되는 함수

2)    User Define Function: 사용자가 만든 함수

3)    3rd party Function: 제조사가 주지 않고 내가 만들지 않은 함수로 이 함수들은 패키지를 다운로드 받아서 설치해야만 사용이 가능

 

2.    Python에서 함수를 표현

이름(매개변수) -> 리턴타입

 

이름(매개변수): 이 경우는 이 함수가 데이터를 리턴하지 않는 경우에 가능성이 높음

아래 설명문에서 리턴을 한다고 작성하는 경우도 있습니다.

 

3.    용어

ð  매개변수는 함수를 호출할 때 넘겨주어야 하는 데이터

ð  리턴은 함수를 수행하고 난 후 남겨주는 데이터

ð  리턴이 있으면 출력을 할 수 있고 변수에 저장해서 재사용 가능

ð  리턴이 없으면 출력도 못하고 변수에 저장도 안됨

 

4.    함수의 사용법 확인

help(함수명)

 

help(max)

->가 있기 때문에 뭔가를 준다.

help(list.sort)

->return None이다  반드시 데이터를 받는다 .그래서 sort해서 준다.

리턴이 없다면 내가 데이터를 줘야하고 그 데이터는 변경되여서 온다.

리턴을 안해주면 내거 받을 수 었다.

 

ð   return 이 없는 함수는 내 데이터를 받아서 데이터에 작업을 수행합니다.

 

li = [100,300,200]

print(li.sort())

 

li = [100,300,200]

li.sort()

print(li)

li자체가 정렬된다.

 

python에서는 help 꼭 해주기를 바란다. 예측이 가능하다.

 

5.     파이썬에서는 함수가 일급 객체

ð  파이썬에서는 함수도 하나의 데이터

ð  함수()은 함수를 호출해서 실행하는 것입니다.

ð  함수는 함수가 저장된 곳의 참조를 의미합니다.

 

li = [100,300,200]

li.sort #에러가 안난다.

print(li.sort)

#<built-in method sort of list object at 0x000001870D6CE180>

built-in 함수가 만들어진것이다.

함수의 주소를 쓰버린 것이다.

 

6.    빌트 인 함수 확인

dir(__builtins__)

 

파이썬에서 __ 있는 것은 예약어 (시스템이 사용하는 것)

print(dir(__builtins__))

아래의 것들은 처음부터 주는 함수이다.

 

 

 

반응형

'Study > Python' 카테고리의 다른 글

python-13  (0) 2020.10.26
python-12  (0) 2020.10.26
python-10  (0) 2020.10.26
Python-9  (0) 2020.09.12
python-8  (0) 2020.09.12
반응형

출처:이것이 자바다 

조건문과 반복문

4.1 코드 실행 흐름 제어

=>정상적인 코드 실행 흐름

main() 메소드의 시작인 중괄호 { 에서 끝 중괄호 } 까지 위->아래 방향으로 실행

=>제어문의 역할

코드 실행 흐름을 개발자가 원하는 방향으로 변경할 수 있도록 도와줌

 

 

v  제어문의 종류

조건문

      if, switch

반복문

      for, while, do-while

break, continue

제어문의 중첩

제어문의 중괄호 내부에 다른 제어문 작성 가능

      다양한 흐름 발생 가능

루핑(looping) : 반복문일 경우는 제어문 처음으로 다시 되돌아가 반복 실행한다.

 

4.2 조건문(if,switch)

4.2.1 if

조건식 결과 따라 중괄호 { } 블록을 실행할지 여부 결정할 때 사용

중괄호 블록을 작성하지 않으면 코드의 가독성(코드 해석)이 좋지 않고 ,버그 발생의 원인이 될 수 있다.

    • 조건식

      true 또는 false값을 산출할 수 있는 연산식

      boolean 변수

      조건식이 true이면 블록 실행하고 false 이면 블록 실행하지 않음

 

 

[ IfExample.java] If

public class IfExample {

       public static void main(String[] args) {

               int score = 93;

 

               if (score >= 90) {

                      System.out.println("점수가 90보다 큽니다.");

                      System.out.println("등급은 A입니다.");

               }

 

               if (score < 90)

                      System.out.println("점수가 90보다 작습니다.");

                      System.out.println("등급은 B입니다.");

       }

}

 

4.2.2 if- else

조건식 결과 따라 실행 블록 선택

 

 

[ IfElseExample.java] if - else

public class IfElseExample {

    public static void main(String[] args) {

        int score = 85;

 

        if(score >= 90) {

            System.out.println("90보다 크다");

            System.out.println("A");

        } else {

            System.out.println("90 아래");

            System.out.println("B");

        }

    }

}

 

4.2.3 if- else if -else

복수의 조건식 두어 조건식을 만족하는 블록만 실행

 

 

[ IfElseIfElseExample.java ]if-else if - else

public class IfElseIfElseExample {

       public static void main(String[] args) {

               int score = 75;

 

               if (score > 90) {

                      System.out.println("점수가 100 ~ 90입니다.");

                      System.out.println("등급은 A입니다.");

               } else if (score >= 80) {

                      System.out.println("점수가 80 ~ 89입니다.");

                      System.out.println("등급은 B입니다.");

               } else if (score >= 70) {

                      System.out.println("점수가 70 ~ 79입니다.");

                      System.out.println("등급은 C입니다.");

               } else {

                      System.out.println("점수가 70 미만 입니다.");

                      System.out.println("등급은 D입니다.");

               }

       }

}

 

=>Math.random() 메소드를 활용

이 메소드는 0.01.0사이에 속하는 double타입의 하나를 리턴한다. 0.0은 범위에 포함되고 1.0은 범위에 포함되지 않는다.

0.0 <= Math.random() < 1.0

 

1~ 10 까지 정수중에서 하나의 정수를 얻기

0.0* 10 <= Math.random()* 10 < 1.0 * 10

(0.0)                                        (10.0)

====>int로 강제 타입변환

(int)0.0* 10 <= Math.random()* 10 < (int)1.0 * 10

0                   (0,1,2,3,...9)                        (10)

1 ~ 10까지의 정수

(int)0.0* 10 +1 <= Math.random()* 10 < (int)1.0 * 10 +1

1          (1,2,3,...10)                  (11)

 

 

int num = (int) (Math.random()* n)+start;

int num = (int) (Math.random()*6) +1;

int num = (int) (Math.random()*45) +1;

 

[IfDiceExample.java]주사위의 번호를 뽑는 예제

public class IfDiceExample {

       public static void main(String[] args) {

               int num = (int) (Math.random() * 6) + 1; // 주사위 번호 하나 뽑기

 

               if (num == 1) {

                      System.out.println("1번이 나왔습니다.");

               } else if (num == 2) {

                      System.out.println("2번이 나왔습니다.");

               } else if (num == 3) {

                      System.out.println("3번이 나왔습니다.");

               } else if (num == 4) {

                      System.out.println("4번이 나왔습니다.");

               } else if (num == 5) {

                      System.out.println("5번이 나왔습니다.");

               } else {

                      System.out.println("6번이 나왔습니다.");

               }

       }

}

 

4.2.4 중첩 if

코드 실행 흐름을 이해하는 것이 가장 중요

 

 

[ IfNestedExample.java]중첩 if

public class IfNestedExample {

       public static void main(String[] args) {

               int score = (int) (Math.random() * 20) + 81;

               System.out.println("점수: "+score);

 

               String grade;

 

               if (score >= 90) {

                      if (score >= 95) {

                             grade = "A+";

                      } else {

                             grade = "A";

                      }

               } else {

                      if (score >= 85) {

                             grade = "B+";

                      } else {

                             grade = "B";

                      }

               }

 

               System.out.println("학점: "+grade);

       }

}

 

4.2.5 switch

조건 제어문

변수나 연산식의 값에 따라 실행문 선택할 때 사용

 

장점 : 비교 대상이 많을 때 if문 보다 효율적이다.

단점 : 사용이 제한 적이다. (실수나 변수 못 쓴다.), 10 <변수 < 15와 같은 범위 값에는 쓸수 없다.

 

case가 없으면 default로 가서 실행문을 실행시킨다.

default는 생략 가능하다.

 

[SwitchExample.java]Switch

public class SwitchExample {

       public static void main(String[] args) {

               int num = (int) (Math.random() * 6) + 1;

 

               switch (num) {

               case 1:

                      System.out.println("1번이 나왔습니다.");

                      break;

               case 2:

                      System.out.println("2번이 나왔습니다.");

                      break;

               case 3:

                      System.out.println("3번이 나왔습니다.");

                      break;

               case 4:

                      System.out.println("4번이 나왔습니다.");

                      break;

               case 5:

                      System.out.println("5번이 나왔습니다.");

                      break;

               default:

                      System.out.println("6번이 나왔습니다.");

                      break;

               }

       }

}

 

case끝에 break 가 붙어 있는 이유는 다음 case를 실행하지 말고 switch문을 빠져나가기 위해서이다.

break가 없다면 다음 case가 연달아 실행되는데,이때에는 case값과는 상관없이 실행된다.

 

[ SwitchNoBreakCaseExample.java]break문이 없는 case

public class SwitchNoBreakCaseExample {

       public static void main(String[] args) {

               int time = (int) (Math.random() * 4) + 8;

               System.out.println("[현재시간 : " + time+" ]");

 

               switch (time) {

               case 8:

                      System.out.println("출근합나다.");

               case 9:

                      System.out.println("회의를 합니다.");

               case 10:

                      System.out.println("업무를 봅니다.");

               default:

                      System.out.println("외근을 나갑니다.");

               }

       }

}

 

영어 대소문자에 관계없이 똑같은 알파벳이라면 동일하게 처리하도록 만든 swithc문이다.

[SwitchCharExample.java]char타입의 Switch

public class SwitchCharExample {

       public static void main(String[] args) {

               char grade = 'B';

 

               switch (grade) {

               case 'A':

               case 'a':

                      System.out.println("우수 회원입니다.");

                      break;

               case 'B':

               case 'b':

                      System.out.println("일반 회원입니다.");

                      break;

               default:

                      System.out.println("손님입니다.");

               }

       }

}

 

자바 6까지는 switch문의 괄호에는 정수 타입(byte, char,short,int, long)변수나 정수값을 산출하는 연산식만 올 수 있었다.

자바 7부터는 string타입의 변수도 올 수 있다.

[ SwitchStringExample.java]String타입의 Switch

public class SwitchStringExample {

       public static void main(String[] args) {

               String position = "과장";

 

               switch (position) {

               case "부장":

                      System.out.println("700만원");

                      break;

               case "과장":

                      System.out.println("500만원");

                      break;

               default:

                      System.out.println("300만원");

               }

       }

}

 

 

 

 

4.3 반복문 (for, while, do -while)

4.3.1 for

1부터 5까지의 합 :

 

 

 

 

 

 

 

 

 

코드가 간결하면 개발 시간을 줄일 수 있고 ,오류가 날 확률도 줄어든다.

 

 

 

초기화식을 생략할 수 도 있다.

int i = 0;

for( ; i <= 100; i++){  ....

}

 

 

 

 

 

어떤 경우에는 초기화식이 둘 이상이 있을수도 있다.

증감식도 둘 이상이 있을 수 있ㄷ.

이런 경우에는 쉼표(,) 로 구분해서 작성하면 된다.

[ForSumFrom1To10Example.java] 부터 10까지 출력

public class ForSumFrom1To10Example {

 

           public static void main(String[] args) {

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

                                  System.out.println(i);

                       }

           }

}

 

[ ForSumFrom1To100Example.java ]1부터 100까지 합을 출력

public class ForSumFrom1To100Example {

 

       public static void main(String[] args) {

               int sum = 0;

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

                      sum += i;

               }

               System.out.println("1 ~ 100 : "+sum);

       }

 

}

 

System.out.println("1 ~ " + i + " : "+sum); =>이런식으로 하면 오류난다. i for문을 벗ㅇ나서는 사용할 없기 때문이다.

 

1부터 100까지의 합을 출력 [ ForSumFrom1To100Example2.java]i부분 수정

public class ForSumFrom1To100Example2 {

 

       public static void main(String[] args) {

               int sum = 0;

               int i = 0;

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

                      sum += i;

               }

               System.out.println("1 ~ "+(i-1)+" : "+sum);

       }

}

 

주의할점 : 부동소수점 타입을 사용하지 말아야 한다.

[ ForFloatCounterExample.java]float 타입 카운터 변수

public class ForFloatCounterExample {

 

       public static void main(String[] args) {

               for(float x = 0.1f ; x <= 1.0f ; x += 0.1f) {

                      System.out.println(x);

               }

       }

 

}

구구단 출력하기

public class ForMultiplicationTableExample {

       public static void main(String[] args) {

               for (int m = 2; m <= 9; m++) {

                      System.out.println("*** " + m + " ***");

                      for (int n = 1; n <= 9; n++) {

                             System.out.println(m + " x " + n + " = " + (m * n));

                      }

               }

       }

}

 

4.3.2 while

for문이 정해진 횟수만큼 반복한다면,while문은 조건식이 true일 경우 계속해서 반복한다.

 

 

 

[ WhilePrintFrom1To10Example.java]1부터 10 까지 출력

public class WhilePrintFrom1To10Example {

       public static void main(String[] args) {

               int i = 1;

               while (i <= 10) {

                      System.out.println(i);

                      i++;

               }

       }

}

 

while문 내에서 계속 누적되는 값을 갖는 변수는 while문 시작 전에 미리 선언해 놓아야 합니다.

[WhileSumForm1To100Example.java]1부터 100까지 합을 출력

public class WhileSumForm1To100Example {

    public static void main(String[] args) {

        int sum = 0;

        int i = 1;

       

        while(i<=100) {

            sum += i;

            i++;

        }

       

        System.out.println("1~" + (i-1) + " : " + sum);

    }

}

 

무한 루프는 무한히 반복하여 실행하기 때문에 언젠가는 while문을 빠져 나가기 위한 코드가 필요하다.

 

 

int keyCode = System.in.read();

 

 

[ WhileKeyControlExample.java]키보드로 while문 제어

public class WhileKeyControlExample {

 

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

               boolean run = true;

               int speed = 0;

               int keyCode = 0;

 

               while (run) {

                      if (keyCode != 13 && keyCode != 10) {

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

                             System.out.println("1.증속 | 2.감속 | 3.중지");

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

                             System.out.print("선택: ");

                      }

 

                      keyCode = System.in.read(); // 키보드의 코드를 읽음

 

                      if (keyCode == 49) { // 1

                             speed++;

                             System.out.println("현재 속도=" + speed);

                      } else if (keyCode == 50) { // 2

                             speed--;

                             System.out.println("현재 속도=" + speed);

                      } else if (keyCode == 51) { // 3

                             run = false; // while문을 종료하기 위해 run 변수에 false 저장

                      }

               }

 

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

       }

 

}

while문을 빠져나가기 위한 또 다른 방법으로 break문을 이용하는 방법도 있다.

System.out.printIn() 메소드는 매개값을 출력하고 다음 행으로 이동.

System.out.print() 메소드는 매개값을 출력만 하고 다음 행으로 이동하지 않는다.

 

4.3.3 do-while

while문은 시작할 때부터 조건식을 검사하여 블록 내부를 실행할지 결정하지만 , do -while 는 블록 내부의 실행문을 우선 실행시키고 실행 결과에 따라서 반복 실행을 계속할지 결정하는 경우도 발생한다.

조건 따라 반복 계속할지 결정할 때 사용하는 것은 while문과 동일

무조건 중괄호 { } 블록을 한 번 실행한 후, 조건 검사해 반복 결정

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

주의할 점은 while()뒤에 반드시 세미콜론(;)을 붙어야 한다.

System.in.read()메소드는 하나의 키 코드만 읽기 때문에 콘솔에 입력된 문자열을 한 번에 읽을 수 없다.

 

 

 

Scanner scanner = new Scanner(System.in);//Scanner객체 생성

String inputString = scanner.nextLine();//nextLine() 메소드 호출

 

 

 

!inputString.equals("q")

 

import java.util.Scanner;

 

[ DoWhileExample.java] do-while

public class DoWhileExample {

       public static void main(String[] args) {

               System.out.println("메시지를 입력하세요");

               System.out.println("프로그램을 종료하려면 q 입력하세요.");

 

               Scanner scanner = new Scanner(System.in); // Scanner 객체 생성

               String inputString;

 

               do {

                      System.out.print(">");

                      inputString = scanner.nextLine(); // 키보드가 입력한 문자열을 얻음

                      System.out.println(inputString);

               } while (!inputString.equals("q")); // 문자열을 비교할 때는 equal() 메소드를 사용.

               // q 저장되어 있으면 false 산출되어 종료

               System.out.println();

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

               scanner.close();

       }

}

 

4.3.4 break

for, while, do-while문 종료 (반복 취소)

Switch문 종료

대개 if문과 같이 사용

if문 조건식에 따라 for문과 while문 종료할 때 사용

 

 

 

 

 

 

 

 

 

 

[ BreakExample.java ]breakwhile문 종료

public class BreakExample {

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

               while (true) {

                      int num = (int) (Math.random() * 6) + 1;

                      System.out.println(num);

                      if (num == 6) {

                             break;

                      }

               }

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

       }

}

 

반복문이 중첩된 경우

반복문이 중첩되어 있을 경우 break; 문은 가장 가까운 반복문만 종료

바깥쪽 반복문까지 종료시키려면 반복문에 이름(라벨)을 붙이고, break 이름;” 사용

 

 

 

 

 

 

 

 

 

 

 

[ BreakOutterExample.java]바깥쪽 반복문 종료

public class BreakOutterExample {

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

               Outter: for (char upper = 'A'; upper <= 'Z'; upper++) {

                      for (char lower = 'a'; lower <= 'z'; lower++) {

                             System.out.println(upper + "-" + lower);

                             if (lower == 'g') {

                                    break Outter;

                             }

                      }

               }

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

       }

}

 

 

4.3.5 continue

for, while, do-while문에서 사용

for: 증감식으로 이동

while, do-while: 조건식으로 이동

continue문은 반복문을 종료하지 않고 계속 반복을 수행한다는 점이 break문과 다르다.

 

 
 

 

 

 

 

 

 

 

 

 

 

[ContinueExampl.java]continue를 사용한 for

public class ContinueExample {

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

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

                      if (i % 2 != 0) {

                             continue;

                      }

                      System.out.println(i);

               }

       }

}

특정 조건을 만족하는 경우에 continue문을 실행하지 않고 다음 반복으로 넘어간다.

 

연습문제

1. 조건문과 반복문의 종류를 괄호 ( ) 속에 넣어 보세요.

 

조건문 : ( if ) , ( switch )

반복문 : ( for ) , ( while ) , ( do - while )

 

2. 조건문과 반복문을 설명한 것 중 틀린 것은 무엇입니까? (2)

 

1. if문은 조건식의 결과에 따라 실행 흐름을 달리할 수 있다.

2. switch문에서 사용할 수 있는 변수의 타입은 int , double이 될 수 있다.

3. for문은 카운터 변수로 지정한 횟수만큼 반복시킬 때 사용할 수 있다.

4. break문은 switch, for, while문을 종료할 때 사용할 수 있다.

 

2. switch(변수) {

정수,String

}

 

3. for문을 이용해서 1부터 100까지의 정수 중에서 3의 배수의 총합을 구하는 코드를 작성해보세요.

package sec4_example;

 

public class Exercise03 {

 

    public static void main(String[] args) {

        int sum = 0;

        int i = 0;

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

            if(i%3==0) {

                sum = sum+i;

            }

        }

        System.out.println("3 배수의  :" + sum);

    }

}

 

3 배수의  :1683

 

4. while문과 Math.random() 메소드를 이용해서 두 개의 주사위를 던졌을 때 나오는 눈을 (1,2) 형태로 출력하고, 눈의 합이 5가 아니면 계속 주사위를 던지고, 눈의 합이 5이면 실행을 멈추는 코드를 작성해보세요. 눈의 합이 5가 되는 조합은 (1,4) , (4,1) , (2,3) , (3,2) 입니다.

package sec4_example;

 

public class Exercise04 {

    public static void main(String[] args) {

    

        while (true) {

            int num1 = (int) (Math.random()*6+ 1;

            int num2 = (int) (Math.random()*6+ 1;    

            if(num1 + num2 ==5) {

                System.out.println("(" + num1 +"," + num2 + ")");

                break;

            }

            else {

                System.out.println("(" + num1 +"," + num2 + ")");

            }

        }

        

    }

}

(4,4)

(1,3)

(3,5)

(6,2)

(1,6)

(4,6)

(4,2)

(4,6)

(5,6)

(3,6)

(4,3)

(4,4)

(5,6)

(3,1)

(2,1)

(1,2)

(1,4)

 

5. 중첩 for문을 이용하여 방정식 4x + 5y = 60의 모든 해를 구해서 (x,y) 형태로 출력해보세요.

, x y 10 이하의 자연수입니다.

package sec4_example;

 

public class Exercise05 {

    public static void main(String[] args) {

         

        for(int x=0;x<=10;x++) {

            for(int y=0;y<=10;y++) {

                if(4*x+5*y==60) {

                    System.out.println("(" + x + "," + y + ")");

                }

            }

        }

    }

}

(5,8)

(10,4)

 

6. for문을 이용해서 실행 결과와 같은 삼각형을 출력하는 코드를 작성해보세요.

package sec4_example;

 

public class Exercise06 {

 

    public static void main(String[] args)

    {        

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

        {

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

            {

                System.out.print("*");

            }

            System.out.println();

        }

    }            

}

*

**

***

****

*****

 

7. while문과 Scanner를 이용해서 키보드로부터 입력된 데이터로 예금, 출금, 조회, 종료 기능을 제공하는 코드를 작성해보세요. 이 프로그램을 실행시키면 다음과 같은 실행 결과가 나와야 합니다.

package sec4_example;

 

import java.util.Scanner;

 

public class Exercise07 {

    public static void main(String[] args) {

        boolean run = true;

        

        int balance = 0;

        

        Scanner scanner = new Scanner(System.in);

        

        while(run) {

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

            System.out.println("1. 예금 | 2.출금 | 3.잔고 | 4.종료");

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

            System.out.println("선택> ");

            

            int num = scanner.nextInt();

            

            switch (num) {

            case 1:

                System.out.print("예금액>");

                int deposit = scanner.nextInt();

                balance += deposit;

                break;                

            case 2:

                System.out.print("출금액>");

                int withdraw = scanner.nextInt();

                balance -= withdraw;

                break;

            case 3:

                System.out.println("잔고>" + balance);                

                break;    

            case 4:

                run = false;

                break;            

            }

        }

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

    }

}

-------------

1. 예금 | 2.출금 | 3.잔고 | 4.종료

-------------

선택> 

1

예금액>10000

-------------

1. 예금 | 2.출금 | 3.잔고 | 4.종료

-------------

선택> 

2

출금액>2000

-------------

1. 예금 | 2.출금 | 3.잔고 | 4.종료

-------------

선택> 

3

잔고>8000

-------------

1. 예금 | 2.출금 | 3.잔고 | 4.종료

-------------

선택> 

4

프로그램 종료

 

 

반응형

' > 이것이 자바다' 카테고리의 다른 글

06. 클래스  (0) 2020.09.28
05. 참조 타입  (0) 2020.09.27
03. 연산자  (0) 2020.09.24
02.변수와 타입  (1) 2020.09.22
01. 자바 시작하기  (0) 2020.09.20

+ Recent posts