이 글은 fast campus 강의를 기반으로 작성한 글입니다.
조건문에 대해서 알아보겠습니다.
예들 들어서
'재산이 1억 이상이면 100만원을 세금으로 낸다 그렇지 않으면 내지 않는다' 를 구현 한다면
만약(재산이1억이상이면){
세금을 100만원 낸다
}
그렇지 않으면
{
세금을내지않는다
}
입니다.
if문 문법
if(조건식){
수행문; // 조건식이 '참'인 경우에(조건에 맞는 경우) 수행문이 수행됨
}
if - else 문 문법
if( 조건식) {
수행문1; // 조건식이 '참'인 경우에 수행됨
}
else{
수행문2; // 조건식이 '참'이 아닌 경우에 수행됨
}
- if - else 예제
package ch14;
import java.util.Scanner;
public class IfElseTest {
public static void main(String[] args) {
int age = 7;
//Scanner scanner = new Scanner(System.in);
//int age = scanner.nextInt();
if( age >= 8) {
System.out.println("학교에 다닙니다");
}
else {
System.out.println("학교에 다니지 않습니다.");
}
}
}
위 조건문예제에서 if문의 statement(조건이 하나 일때) 괄호는 문법적으로 필요가없지만
가독성을 위해 하는것이 좋습니다. 또한 나중에 추가할일이 생길수도있기 때문이다.
조건이 여러 개 일때의 if문
if(조건식1){
수행문1; // 조건식1이 '참'인 경우 수행하고 전체 조건문을 빠져나감
}
else if(조건식2){
수행문2; // 조건식2이 '참'인 경우 수행하고 전체 조건문을 빠져나감
}
else if(조건식3){
수행문3; // 조건식3이 '참'인 경우 수행하고 전체 조건문을 빠져나감
}
else{
수행문4; // 위 조건이 모두 해당되지 않는 경우 수행됨 (디폴트 조건)
}
수행문5; // if-else if-else 문이 끝나면 수행됨
가령 조건식2가 만족되면 수행문2 -> 수행문5 순으로 수행됨
위 표에서 중요한건 가령 조건식 2가 만족되면 수행문2 -> 수행문5 -> 순으로 수행된다는것을 이해해야한다.
if-else if 문과 if - if 문의 차이점
- if- else if 를 사용하는 경우 하나의 조건이 만족 되면 나머지 else if 부분은 수행되지 않습니다
- if - if 로 사용하게 되면 각각 다른 조건 문으로 해석되어 각각 수행하게 됩니다.
if -else 문 은 조건식이 맞으면 수행문을 출력하고 빠져나오는데
if- if 문은 조건식이 맞는지 다 확인을 하게됩니다.
조건이 여러 개 일 때 간단히 표현되는 switch-case 문
switch case = if -else 문이랑 비슷한느낌입니다.
비교 조건이 특정값이나 문자열일때 많이사용되며
break 문을 사용하여 블럭을 나가기도합니다.(조건이 만족되면)
package ch16;
import java.util.Scanner;
public class SwitchCaseTest {
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
int month = sc.nextInt();
int day;
switch (month){
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
day = 31;
break;
case 4: case 6: case 9: case 11:
day = 30;
break;
case 2:
day =28;
break;
default:
day =0;
System.out.println("존재하지 않는 달 입니다.");
}
System.out.println(month +"월은 "+day+ "일입니다.");
}
}
/* 출력문 8
8월은 31일입니다.
Process finished with exit code 0
*/
반복문 while문
조건이 참이 될때 까지 반복수행하는것입니다.
조건이 맞지 않으면 반복하던 수행을 멈추게됩니다.
다음은 while문의 기본 예제입니다.
1. 0부터9 까지 출력하는 예제
package ch17;
public class WhileTest {
public static void main(String[] args) {
int a = 0;
while (a < 10) {
System.out.println(a);
a++;
}
}
}
2.0부터 9까지 더하는예제
package ch17;
public class WhileTest {
public static void main(String[] args) {
int a = 0;
int sum =0;
while (a < 10) {
System.out.println(a);
sum += a;
a++;
}
System.out.println( sum);
}
}
3. break; 를사용하여 99때 멈추는예제. a++;로인해 계속 더하다 100이 되면 멈춘다는 예제입니다.
package ch17;
public class WhileTest {
public static void main(String[] args) {
int a = 0;
while (true){
if(a ==100){
break;
}
System.out.println(a);
a++;
}
}
}
do-while문
4.입력받는 모든 숫자의 합을 구하는 예제 단, 입력이 0이 되면 반복을 그만하고 합을 출력.(입력 받는 코드가 2개이상일땐
do - while 문으로 단축할수있다)
package ch18;
import java.util.Scanner;
public class DowhileTest {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int input;
int sum = 0;
do {
input = scanner.nextInt();
sum += input;
}while(input != 0);
System.out.println(sum);
}
}
반복문 - for 문
i+1 과 i++은 다릅니다.
i+1 자체는 i 값이 증가되지 않습니다. 증가하기 위해서는 대입연산자를 써야합니다.
하지만 i++은 i = i+1, i+=1 과 동일한 의미입니다.
따라서 값을 1씩 증가하려고 한다면 i++을 사용하세요
다음은 구구단 예제입니다.
package ch18;
public class GuguDan {
public static void main(String[] args) {
int dan = 2;
int num = 1;
for( dan =2; dan<=9; dan++){
for(num=1; num<=9; num++){
System.out.println( dan +"*"+ num +"="+dan*num);
}
System.out.println();
}
}
}
- 반복문 내부에 또 다른 반복문이 있음
- 여러 겹으로 반복문을 겹쳐서 구현 가능 (단 수행시간에 문제가 발생할 수 있음)
- 외부 반복문과 내부 반복문 간의 변수 값 변화에 유의 하며 구현하여야 함
중요해야할점은 중첩이 많이 되면 수행속도가 느려집니다.
중간에 멈추는 break문, 무시하고 계속 진행하는 continue문
break 문 사용하기
1부터 숫자를 더하여 100이넘는 순간 그 숫자와 합을 출력하는 예제입니다.
package ch19;
public class BreakTest {
public static void main(String[] args) {
int sum = 0;
int num ;
for (num = 1; ; num++) {
sum += num;
if (sum >= 100)
break;
}
System.out.println(sum);
System.out.println(num);
int sum1 = 0;
int num1 ;
for (num1= 1; sum1<= 100; num1++) {
sum1 += num1;
}
System.out.println(sum1);
System.out.println(num1);
}
}
/*
출력
105
14
105
15
*/
출력문을보면 105 , 14 가 정답입니다 아래 코드로 하는 실수가있을수있는것을 조심하세요
1부터100까지 3의 배수만 출력하는 예제 입니다.
package ch19;
public class BreakTest {
//1부터 100까지 숫자 중 3의 배수를 출력하세요
public static void main(String[] args){
for(int i= 0; i<=100; i++){
if((i%3)!=0) continue;
System.out.println(i);
}
}
}
if( (num % 3) != 0) continue; 이문장의 해석은 나머지가 0 아니면 진행하라 , 즉 %3을 했으니 나머지가 0이니깐 계속 진행하는것입니다.
'자바 정리' 카테고리의 다른 글
자바 인강4주차 (0) | 2022.08.28 |
---|---|
자바 인강 3주차(2) (0) | 2022.08.24 |
자바 인강 3주차. (0) | 2022.08.21 |
자바 인강2주차 객체지향 (0) | 2022.08.16 |
자바 인강 1주차. (0) | 2022.08.04 |