java

[ java ] 제어문 - 조건문 , 반복문, 분기문

변쌤(이젠강남) 2024. 1. 29. 00:01
반응형

제어문 

 

1. 조건문 : 조건에 따라 처리하는 명령을 달리하는 문장

2. 반복문 : 일정한 조건이 충족될 때까지 동일한 명령을 반복적으로 처리하는 문장

3. 분기문 : 강제로 명령의 처리 순서를 바꾸는 문장

 

조건문

  1. if 문 
  2. if ~ else 문 
  3. if ~ else if ~ else 문 
  4. switch 문 

 

반복문 

  1. for 문 
  2. while 문
  3. do ~ while 문 

 

분기문 

  1. break 
  2. continue

 

 

조건문

1. if 문 

형식

if( 조건식 ) {

	조건식이 참이면 실행되는 코드 
    
}

 

if문 형식

 

예) Ex01

public class Ex01 {
   public static void main(String[] args) {
      int num = 10;
 
      if (num > 15) {
        System.out.println("숫자가 15보다 큽니다.");
      }
 
      System.out.println("이 문장은 if문 외부에 있습니다.");
      
   }
}

 

if문

 

 int num = 10; // 정수형 변수 num에 10을 대입  
 if (num > 15) { // num 값이 15보다 크면 
        System.out.println("숫자가 15보다 큽니다."); // 결과가 참일 때 실행 
}  
System.out.println("이 문장은 if문 외부에 있습니다."); // 참 결과 후 실행, 참이 아닐 때 실행 

 

 

형식 2 )  

if(  조건식 ) {
  조건식이 참이면 실행되는 코드 
}else {
  조건식이 거짓이면 실행되는 코드
}

 

if~ else

 

예 ) Ex02

public class Ex02 {
   public static void main(String[] args) {
      int num = 70;
 
      if ( num < 50) {
        System.out.println("숫자가 50보다 작습니다.");
      }
      else {
        System.out.println("숫자가 50보다 큽니다.");
     }
  }
}

 

 

if ~ else

 

 

형식 3)

if(  조건식1 ) {
  조건식1이 참이면 실행되는 코드 
}else if(  조건식2 ) {
  조건식2이 참이면 실행되는 코드 
}
...
else if(  조건식n ) {
  조건식n이 참이면 실행되는 코드 
} else {
  조건식1 ~ 조건식n이 거짓이면 실행되는 코드
}

 

다중 if문

 

예)

public class Ex03 {
   public static void main(String[] args) {
      int num = 20;
 
      if (num == 10) {
        System.out.println("숫자가 10입니다.");
     }
     else if (num == 15) {
        System.out.println("숫자가 15입니다.");
     }
     else if (num == 20) {
        System.out.println("숫자가 20입니다.");
     }
     else {
        System.out.println("숫자가 존재하지 않습니다.");
     }
  }
}

 

 

다중 if문

 

 

 

문자열 비교

 

== 비교를 위한 연산자
주소의 값을 비교.(Call By Reference)
주소의 값이란 실제 내용의 값이 아닌 자료의 위치의 값

equals() 메소드
equals() 메소드는 객체끼리 내용 비교.(Call By value)

 

비교대상변수.equals("비교문자열")

 

 

switch 문 

형식 1 )

switch ( 연산식 또는 변수 ) {
   case 값:
   	실행코드 ;
   	break;
   case 값:
   	실행코드 ;
   	break;
    ...
   case 값:
   	실행코드 ;
   	break;
   default:
    실행문;
}

 

 

switch 문

 

public class Ex04 {
  public static void main(String[] args) {
     char grade = 'B’;
     switch (grade) {
        case 'A’:
           System.out.println("매우 우수");
           break;
        case 'B’:
           System.out.println("우수");
           break;
        case 'C’:
           System.out.println("좋음");
           break;
        case 'D’:
           System.out.println("좀 더 열심히");
           break;
        case 'F’:
           System.out.println("미흡");
           break;
        default:
           System.out.println("잘못된 등급");
     }
  }
}

 

 

switch

 

 

형식 2) 

switch ( 연산식 또는 변수 ) {
   case 값 -> 실행코드 ;
   case 값 -> 실행코드 ;
   ...
   default -> 실행문;
};

 

 


 

# 반복문

일정 횟수만큼 코드를 반복하여 실행할 때

반복적으로 실행되는 동작을 루프(loop)라고 함

for문, whie문, do ~ while문 

 

반복문 설명
for 반복 횟수가 정해졌을 때 사용 1부터 10까지 더하기 같은 고정 반복
while 조건이 참인 동안 반복 사용자 입력을 처리하거나 무한 루프 생성 시
do-while 최소 한 번 실행 후 조건 확인 조건이 실행 후 결정될 때
for-each 배열/컬렉션 요소를 간단히 순회할 때 리스트나 배열의 모든 값 처리 시

 

  • break: 반복문을 강제로 종료
  • continue: 현재 반복을 건너뛰고 다음 반복 실행

 

 

1. for문 

for( 초기값 ; 조건식 ; 증감식 ){
  실행코드
}

 

for문

 

 

 

for문

 

 

for문

 

 

 

예)

public class Ex01 {
   public static void main(String[] args) {  
 
      for (i = 1; i <= 10; i++) {
          System.out.print(i + " ");
     }
  }
}

 

for문

 

 

예)

 

합계구하기

 

for문

 

 

 

# 중첩 for문 

중첩된(for 중첩) 문은 하나 이상의 for 루프를 다른 for 루프 안에 중첩하여 사용하는 것을 말합니다. 중첩된 for 문은 복잡한 패턴을 생성하거나 다차원 배열과 같은 데이터 구조를 반복하는 데 유용합니다. 아래는 중첩된 for 문의 기본 구조입니다

 

for (initialization; condition; update) {
    for (initialization; condition; update) {
        // 내부 루프 본문
    }
    // 외부 루프 본문
}

 

내부 루프는 외부 루프의 한 반복마다 여러 번 실행됩니다. 외부 루프는 내부 루프가 모두 실행될 때까지 반복됩니다.

 

 

for (int i = 0 ; i < 3 ; i++ ) {
	for( int k = 0 ; k < 2; k++ ) {
    	실행문
    }
}

 

중첩 for문

 

 

 

 

2. while문

조건식이 참이면 루프를 계속 반복하는 반복문

반복 횟수가 정해져 있지 않을 때 사용 ( 주로 무한루프  )

 

 

형식 )

while( 조건식 ) {
  실행코드 
}

 

초기값

while( 조건식 ) {
  실행코드 
  증감식
}

 

무한루프

while( true ) {
  실행코드 
  증감식
}

while문

 

 

while문

 

 

예)

public class Exa02 {
   public static void main(String[] args) {
       int i = 1; 
       while (i <= 10) {
          System.out.print(i + " ");
          i++;
      }
   }
}

 

while문

 

3. do ~ while 문 

조건식을 확인하기 전에 코드 블록의 코드가 한번 실행

조건에 맞지 않아도 무조건 한 번은 실행 

 

형식 )

do {
  실행코드 
} while(조건식);

 

do ~ while문

 

 

4. 분기문

break : 중단

 

continue : 

특정 조건을 건너뛰고 나머지를 계속 실행하려는 경우에 사용

반복문의 블록 내부에서 for문의 증감식 또는 while문의 조건식으로 이동하는 역할

 

 

 

# Scanner 클래스

 

Scanner 클래스는 자바에서 사용자 입력을 받는 데 사용되는 유용한 클래스입니다. 이 클래스는 키보드로부터 사용자의 입력을 읽어들이는 데 사용되며, 다양한 데이터 유형의 입력을 처리할 수 있습니다. Scanner 클래스는 java.util 패키지에 포함되어 있습니다.

 

Scanner 클래스는 Java의 java.util 패키지에 속해 있으며, 표준 입력 스트림(Standard Input Stream)인 System.in에서 데이터를 읽어오는데 사용됩니다. 이것은 사용자가 키보드로 입력한 내용을 프로그램으로 가져올 수 있게 해줍니다.

여기서 Scanner 객체를 생성할 때 System.in을 매개변수로 전달하여, 키보드로부터의 입력을 읽을 수 있도록 합니다. 

 

 

 

Scanner

 

 

Scanner 클래스의 주요 메서드:

  1. next(): 공백이나 개행 문자를 기준으로 다음 토큰을 반환합니다.
  2. nextInt(): 다음 정수 값을 반환합니다.
  3. nextDouble(): 다음 double 값을 반환합니다.
  4. nextLine(): 다음 라인을 읽어들입니다.

 

  1. hasNext(): 다음 입력 토큰이 있는지 여부를 확인합니다.
  2. hasNextInt(): 다음 입력이 정수로 변환 가능한지 여부를 확인합니다.
  3. hasNextDouble(): 다음 입력이 double로 변환 가능한지 여부를 확인합니다.

 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        // Scanner 객체 생성
        Scanner scanner = new Scanner(System.in);

        // 문자열 입력 받기
        System.out.print("입력하세요: ");
        String str = scanner.next();
        System.out.println("입력값, " + str );

        // 정수 입력 받기
        System.out.print("숫자를 입력하세요: ");
        int num = scanner.nextInt();
        System.out.println("정수값 " + num );

        // Scanner 닫기
        scanner.close();
    }
}

 

Scanner 클래스는 사용한 자원을 해제하고 메모리를 반환하기 위해 close() 메서드를 호출해야 합니다.

Scanner 객체는 키보드나 파일 같은 외부 리소스와 연결되어 있을 수 있습니다. 이러한 외부 리소스와의 연결을 종료하지 않으면 자원 누수가 발생할 수 있습니다.

Scanner 클래스를 사용한 후에는 close() 메서드를 호출하여 리소스를 해제

 

 

  1. scanner.next():
    • next() 메소드는 입력 스트림에서 공백을 기준으로 다음 토큰을 읽어옵니다. 토큰은 공백을 포함하지 않는 연속된 문자열입니다.
    • 예를 들어, "hello world"라는 입력이 있을 때, next()를 호출하면 "hello"만 읽어옵니다. "world"는 다음 호출에서 읽혀집니다.
    • 반환값은 다음 토큰을 나타내는 문자열입니다.
  2. scanner.nextLine():
    • nextLine() 메소드는 입력 스트림에서 현재 행의 나머지 부분을 읽어옵니다. 줄 바꿈 문자가 나올 때까지의 모든 문자를 읽어옵니다.
    • 따라서 이 메소드를 호출하면 현재 행의 나머지 부분을 모두 읽어옵니다.
    • 반환값은 현재 행의 나머지 부분을 나타내는 문자열입니다.

 

 

 

반응형