본문 바로가기
수업 일지/JAVA

5일차 - [JAVA] 삼항연산자/while문/break/continue

by 쿠쿠씨 2022. 1. 4.
반응형

난이도가 급상승한 것 같다. 복습을 열심히 하도록 하자!

 

* 코딩의 지향점 *

 1. 불필요한 변수 사용은 줄인다.

 2. 반복되는 코드가 없도록 한다.

 3. 다른 사람이 이해하기 쉬운 코드로 작성한다.

 

예제1: 사용자 비밀번호 검사

 

문제: 비밀번호 규칙

1) 8글자 이상.
2) 영문 대/소문자 각각 1개 이상 포함.

3) 숫자 1개 이상 포함.

4) 특수문자 1개 이상 포함.

예제1-1

10라인 대문자, 소문자, 숫자, 기호 개수를 나타내는 변수를 선언하고 초기화한다.

11라인 password 규칙에 맞는지 논리값을 저장할 논리형 변수 isOk를 선언하고 false로 초기값을 설정한다.

12라인 password 규칙을 불만족하는 조건을 저장할 변수 message를 선언하고 초기화한다.

* 연산에 사용되는 변수는 반드시 초기값을 저장해야한다.

21라인 8글자 이상 조건을 만족하기 위해 if문과 length() 메소드를 사용해 크기가 8보다 작을 경우

          출력할 메시지를 변수 message에 저장한다.

24라인 영문 대/소문자, 숫자, 기호를 각각 1글자 이상 사용하였는지 검사하기 위해 for문과 charAt()을 사용한다.

26라인 변수 temp에 입력한 비밀번호의 각 자리에 해당하는 문자를 저장한다.

28라인 if-else if문을 사용하여 변수 temp에 저장한 문자가 어떤 형식인지(대/소문자, 숫자, 기호)를 검사한다.

예제1-2

46라인 if문을 사용하여 각 형식의 문자의 개수가 0개일 경우 출력할 메시지를 변수 message에 더한다.

54라인 비밀번호 규칙의 모든 조건을 만족할 경우 논리형 변수 isOk는 true가 된다.

57라인 불만족 조건을 합산한 message를 출력한다.

58라인 삼항 연산자를 이용하여 비밀번호가 사용 가능한지 결과를 출력한다. 

 

삼항 연산자

 

형식:  (조건식) ? A : B

조건식이 true일 경우 연산의 결과는 A이다.

조건식이 false일 경우 연산의 결과는 B이다. 

if-else문을 간단하게 작성할 수 있다.

isOk ? "사용할 수 있는 패스워드입니다." : "패스워드 작성 규칙에 맞지 않습니다."

 isOk가 true일 경우 "사용할 수 있는 패스워드입니다."를 출력하고

          false일 경우 "패스워드 작성 규칙에 맞지 않습니다."를 출력한다.

 

예제1 결과

예제2: 사용자 비밀번호 검사2

 

예제2는 예제1에 추가적으로 조건이 붙었다.

문제: 비밀번호 규칙

1) 8글자 이상.
2) 영문 대/소문자 각각 1개 이상 포함.

3) 숫자 1개 이상 포함.

4) 특수문자 1개 이상 포함.

5) > < ) ( ; % \ 공백을 사용할 수 없음

 

예제2-1

19라인 예제1에서는 next() 메소드를 사용했지만 예제2에서는 공백을 구분하므로 nextLine() 메소드를 사용한다.

25라인 사용 불가능한 기호가 있는지 논리값을 저장할 변수 isUseless를 선언하고 초기값을 false로 한다.

36라인 else if문에 if문을 중첩하여 특수 문자 중 사용 불가능한 기호가 있다면 isUseless를 true로 바꾼다.

          (if문 내의 숫자는 사용 불가능 문자의 아스키코드의 10진수 값이다.)

예제2-2

63라인 ifUseless값이 true라면(비밀번호에 사용 불가능한 문자가 있다면) 출력할 메시지를 변수 message에 더한다.

67라인 비밀번호 가능 조건들에 && !isUseless를 추가하였다. !isUseless는 true 즉, isUseless가 false여야 괄호 내 조건이 true가 되고 isOk가 true가 된다.  

 

예제2 결과

 반복문: while문

 

형식: while(조건식) { A }

조건식이 true일 경우 A가 실행되고 다시 조건식으로 돌아간다.

조건식이 false라면 while문이 종료된다.

while문 연습

7라인~9라인의 for문과 13라인~17라인의 while문의 출력 결과는 같다.

1번째 while문 종료후 j의 값 5가 남아있어 2번째 while문에서 j의 초기값은 5이다.

23라인if(j==0) break;이 없다면 2번째 while문은 계속해서 실행된다. (무한 루프)

 

예제3: 사용자 비밀번호 검사3

 

예제3은 예제2의 조건과 같고 while문을 이용하여 반복 입력이 가능한 코드를 만드는 문제이다.

예제3

이전 예제2에서 18라인~23라인이 추가되었다.

18라인 while문은 조건식 !isOk가 false, 즉 isOk가 true(비밀번호 사용 가능)가 될 때 종료된다.

           → 비밀번호를 완성할 때까지 다시 입력할 수 있다.

19라인~23라인 값들을 초기화하지 않으면 비밀번호를 입력할 때마다 값들이 중첩된다. 

 

예제4: 계산 프로그램 만들기

 

문제:

[[수학 공부 도우미]]
1. 덧셈       2. 뺄셈    3. 곱셈      4. 종료

연산을 선택하세요. ->  ..1..
✏️  값 1 을 입력하세요. ->  ..34..
✏️  값 2 을 입력하세요. ->  ..23..
정답  : 34 + 23 = 57 입니다.

연산을 선택하세요. ->  ..2..
✏️  값 1 을 입력하세요. ->  ..71..
✏️  값 2 을 입력하세요. ->  ..23..
정답  : 71 - 23 = 48 입니다.

연산을 선택하세요. ->  ..4.
프로그램을 종료 합니다.Bye,,👍👍

 

1, 2, 3, 4 이외의 값을 입력하면

다시 입력하라는 문구 출력

예제4

12라인 연산 종류를 선택하는 번호(1, 2, 3, 4)를 변수 cal로 선언하고 초기화했다.

16라인 while문의 조건식은 cal!=4이다.

          → 연산 선택 과정에서 4가 아닌 수를 입력하면 계속 실행할 수 있다.

21라인 if문에서 cal이 4라면 종료 문구가 출력되고 break문이 실행되어 while문이 종료된다.

25라인 cal에 1, 2, 3, 4가 아닌 다른 값이 입력되면 경고 문구가 출력되고 continue문이 실행되어

          while문의 조건식으로 돌아간다.

33라인 cal이 1이라면, printf() 메소드를 사용하여 입력받은 n1, n2 값으로 덧셈 연산을 하고 출력한다. 

36라인 cal이 2라면, printf() 메소드를 사용하여 입력받은 n1, n2 값으로 뺄셈 연산을 하고 출력한다. 

39라인 cal이 3이라면, printf() 메소드를 사용하여 입력받은 n1, n2 값으로 곱셈 연산을 하고 출력한다.

 

다음은 강사님이 작성한 예제4의 코드이다.

 

예제4(강사님ver.)

12라인 char형 변수 op를 선언하고 초기화했다.

33라인 sel이 1이면 변수 op가 '+'이고 result=n1+n2가 된다. if문 내에 출력문은 작성하지 않았다.

36라인 sel이 2면 변수 op가 '-'이고 result=n1-n2가 된다. 

39라인 sel이 3이면 변수 op가 '*'이고 result=n1*n2가 된다. 

43라인 print() 메소드를 사용하고 변수 op와 변수 result를 사용하여 출력문을 작성하였다.

          →반복되는 코드를 줄였다.

 

break문과 countinue문

 

break문은 반복문인 for문, while문 그리고 switch문의 실행을 중지할 때 사용된다.

→ 주로 if문과 같이 사용되고, 반복문을 종료한다.

continue문은 반복문인 for문, while문에서만 사용되고 실행되면 for문의 증감식, while의 조건식으로 이동한다.

→ 주로 if문과 같이 사용되고, continue문 이후의 문장을 실행하지 않고 다음 반복으로 넘어간다.

 

* 새로 배운 단축키

 • Package Explorer에서 class 클릭후 F2 누르면 이름 변경 가능

 

* 현재까지 배운 내용

1. 산술, 관계, 논리연산자 활용하여 수식 작성하기
2. 기본데이터형 개념 이해하고 변수 활용하기
3. String 클래스 이용하여 문자열 활용하기
4. if, switch문으로 조건에 따른 명령문 제어하기
5. for, while문으로 조건에 따라 명령문 반복하기

반응형

댓글