본문 바로가기

학원/JAVA - 학원

조건문

728x90

단순 if문

<예제>

 

if - else문

<예제>

 

<예제>

먼저 입력할 정수 값인 a, b, c를 스캐너를 통해 설정한다.

다음으로 삼각형의 넓이와 사다리꼴의 넓이를 구하는 식을 int x와 int y에 대입시킨다.

먼저 삼각형의 넓이를 구하는 식에는 윗변은 필요 없기 때문에 윗변의 길이가 0일 경우 삼각형의 넓이를 구한다고

if의 조건문에 설정한다.

다음으로 마지막이 0이 아닌 경우는 else에서 사다리꼴의 넓이를 구하는 식이 나오도록 설정한다.

(마지막 출력문은 잘못 들어간거)

정확하게는 사다리꼴과 삼각형의 넓이에서 double을 주는 것이 좋았다.

 

<예제>

10의 자리와 1의 자리가 같으려면 11로 나누었을 때 나머지가 0이 나와야 한다.

선생님 방법

1의자리: n%10
10의 자리: n%100 / 10
100의 자리: n%1000 / 100
1000의 자리: n%10000 / 1000
10000의 자리: n/10000

 

위의 식을 통해서 각 자리수를 구하고 계산하는 방식.

 

<예제>

앞선 문제와 마찬가지로 자연수의 각 자릿수를 구하는 공식을 사용해서 1의 자리, 10의 자리, 100의 자리를 따로 구한다.

이후에 100의 자리와 10의 자리 합을 구하는 식과 10의 자리와 1의 자리의 곱을 구하는 식을 따로 작성하면 된다.

선생님 방법

 

else - if 문

 

- 3가지 이상의 조건이 붙을 경우 사용

 

<예제>

 

<예제>

 

처음에는 b는 a보다 작고, c보다 크며, a는 c보다 크다고 설정해서 중간 값으로 만들어 두고, 출력이 b가 나오도록 했다.

다음 경우에는 a를 중간 값으로 설정하고, 마지막 else문에서는 두 경우 모두 아닌 경우에 c가 중간 값으로 나오도록 했다.(위에 꺼 틀림 - 왜 틀림?)

틀린 이유 : 만약 저기서 c가 a와 b보다 모두 크다면 중간값이 아니라 c 값이 출력된다.

 

이게 정답.

중간 값을 정수 값으로 선언

먼저 a가 b보다 크거나 c보다 작은경우 또는 a가 c보다 크거나 b보다 작은 경우를 선언하여 계산 오류의 여지를 없앤다.

위의 경우에는 중간 값이 a가 나오게 된다.

다음 경우는 중간 값이 b가 나오는 경우를 설정하고, 두 경우가 아닌 else의 경우에는 c가 나오도록 설정한다.

 

<예제>

 

 

<예제>

하나의 else-if문으로 max값을 구하고, 또 하나의 else-if문으로 min 값을 구한 뒤 한번에 출력

 

switch문

 

<예제>

 

위의 내용은 if문으로도 만들 수 있지만, switch문으로도 만들 수 있다.

마지막 default는 생략 가능하며, default의 break도 당연히 생략 가능하다.

하지만 default를 생략할 경우에는 초기값이 필요하다.

위의 경우가 default를 생략했을 경우로 초기값으로 f를 주었기 때문에 오류가 뜨지 않았다.

만약 초기값을 주지 않고, default를 생략했다면 오류가 발생했을 것이다.

또한, case10과 case9는 결과가 동일하기 때문에 case10의 grade와 break를 생략하더라도 오류 없이 작동한다.

 

case문의 값

case 다음에는 실수나 계산식 같은 것은 올 수 없다.

대신 정수, 문자, 문자열 등은 모두 가능하다.

 

<예제>

case문에 문자열이 오는 경우로 만든 것이다.

초기값은 0으로 설정했는데, 만약 마지막에 if문이 없으면, 메뉴가 없다는 문구랑 같이 0원도 나온다.

그래서 if문으로 price가 0이 아닐 경우에 가격 표시 문구가 뜨도록 설정한 것이다.

 

<예제>

 

<예제 - 문자열>

<예제 - switch문과 if문 혼용>

알고싶은 달을 입력하는 거라서 month에 스캐너를 사용한다.

2월을 제외하고는 모두 31일 혹은 30일을 가지고 있기 때문에 두 덩이로 묶어 준다.

2월은 기본적으로 28일을 가지고 있지만 4년에 한번씩 윤년이 있기 때문에 이를 계산하는 식을 넣어준다.

윤년의 계산식에 해당한다면 29일이 나오고, 그렇지 않다면 28일이 나오도록 if문을 사용한다.

 

<예제>

 

 

<예제>

 

 

선생님 방법

 

<예제>

 

return으로 강제 종료


-----

선생님 답

처음에 연산자를 넣을 값인 p를 string타입으로 스캐너를 만들었다.

이후에 if조건문에 이 연산자들을 넣어야 하는데 그냥 p==+ 이런식으로 집어넣게 되면 오류가 뜬다.

그래서 사용하는 것이 equals함수인데, 이 함수는 객체끼리 내용을 비교하는 함수다. 즉 내가 넣은 문자열로 선언한 연산자인 +와 equals함수에 들어간 문자열 +가 같은지 비교한다.(내용이 같은지 비교하는 것)

그래서 오류 없이 조건에 선언할 수 있다.

조건문에서는 ==로 비교하는 것이 아니라, equals함수를 사용해 조건을 집어넣어야 한다는 것을 기억하자.

이후에는 각 사칙연산에 해당하는 결과가 나오도록 if-else문을 작성한다.

 

<예제>

 

 

<예제>

 

 

<예제>

 

 

 

<예제>

 

 

10의 자리랑 1의 자리 따로 구해서 계산

 

- 내가 푼건 틀렸음.

 

<예제>

 

3, 5, 8 중 하나라도 만족하면 true값이 되도록 설정.

위에서 if 중 하나라도 걸리면 multiple이 true로 바뀌기 때문에 마지막 "어느 배수도 아니다"는 출력되지 않는다.

* 마지막에 !multiple로 해도 정상적으로 출력됨.

 

<예제>

 

100의 자리수와 10의 자리수를 구하는 공식을 사용해서 100달러짜리와 10달러 짜리로 나누고,

만약 10달러 지폐가 1 이하라면 아무것도 출력되지 않도록 코드를 짜면 0.몇은 그냥 생략시킬 수 있다.

 

<예제>

 

선생님 방법

1달러에 10과 100을 곱한 것을 상수 100달러, 10달러로 정해두고 계산하는 방법

 

<별찍기 5-4-3-2-1>

 

선생님 방법

 

첫 for문의 별 1개 + 2번째 for 문의 별 4개로 첫 줄 5개

별 1개 + 별 3개로 둘째 줄 4개

. . . 

 

<문제>

 

 

나는 이런식으로 모든 계산식을 세우고 만약 없으면 그냥 println으로 다음 줄로 넘기고자 if문을 사용했다.

* 출력을 시킬 때 저런 식으로 하는게 아니라 그냥 if문만 쓰고, 값이 0보다 클 때 출력하는 식으로 하면 출력할 때 빈칸이 뜨지 않는다.

 

이러한 방식이 맞다.

728x90

'학원 > JAVA - 학원' 카테고리의 다른 글

배열  (0) 2022.02.01
반복문(loop), 분기문  (0) 2022.01.24
메소드  (0) 2022.01.21
연산자  (0) 2022.01.21
자바 - 이론1  (0) 2022.01.19