728x90
반응형
안녕하세요~ 오늘은 자바 반복문 중 for문에 대해 이야기해보려고 합니다.
for문은 프로그래밍에서 가장 많이 사용되는 반복문 중 하나로, 조건을 만족하는 동안 반복적으로 코드를 실행합니다. 이를 통해 반복적인 작업을 효과적으로 처리할 수 있습니다. 하지만 for문을 사용하는 방법에 따라 코드의 성능과 가독성이 크게 달라질 수 있기 때문에, 잘 활용하는 것이 중요합니다. 이번 포스트에서는 for문의 기본 구조와 사용 방법에 대해 자세히 알아보도록 하겠습니다.
for 문
// 반복문
// 특정 소스 코드를 반복해서 실행하고자 할 때 사용하는 문법
// for / while / do ~ while
// for 반복문
// for( 초기화 코드 ; 조건식 ; 증감식 )
// 반복할 실행 코드;
// for 반복문의 실행 과정
// 1. 초기화 코드
// 2. 조건식( 참과 거짓 )
// 3-1. 조건식이 참일 경우 실행코드 실행
// 3-2. 조건식이 거짓일 경우 반복문을 종료
// 4. 증감식
// 5. 조건식
// ...
public class Control_Statement_For_01 {
public static void main(String[] args) {
System.out.println("프로그램 시작!");
// for 반복문은 초기화구문에서 생성한 변수의 값을 조절하여
// 반복을 실행하는 구조를 가집니다.
for( int i = 10 ; i >= 1 ; i-- )
System.out.printf("i = %d\n", i);
System.out.println("프로그램 종료!");
}
}
제어문의 복합된 사용
반복문 내부의 분기문
제어문은 서로 다른 제어문 내부에 포함되어 작성될 수 있습니다.'
// 제어문의 복합된 사용
// 반복문 내부의 분기문
// 제어문은 서로 다른 제어문 내부에 포함되어 작성될 수 있습니다.
public class Control_Statement_For_02 {
public static void main(String[] args) {
// 1 ~ 10 까지의 정수 중, 짝수에 해당되는 수만 출력하세요.
for( int i = 1 ; i < 11 ; i++ ) {
// 반복문 내부의 분기문 작성
// 1 ~ 10 까지의 정수 중 짝수만 출력
if( i % 2 == 0 )
System.out.printf("i = %d\n", i);
}
/*
// 증감식을 변경하여 1씩 증가되는 것이 아닌 원하는 수 만큼
// 증가 / 감소시킬 수 있습니다.
for( int i = 2 ; i < 11 ; i += 2 )
System.out.printf("i = %d\n", i);
*/
}
}
// 변수 생성 시, 동일한 이름으로는 생성할 수 없습니다.
int n = 10;
System.out.printf("n = %d\n", n);
// 동일한 이름의 변수는 생성할 수 없습니다.
// int n = 100;
// for 문 내부에서 사용되는 모든 변수는 for 문의 실행 과정동안
// 유효한 변수입니다.
for( int i = 1 ; i <= 3 ; i++ ) {
System.out.printf("i = %d\n", i);
}
// 기존의 i 변수는 반복문의 종료와 함꼐 소멸된 상태이므로
// 반복문이 끝난 이후에는 접근(사용)할 수 없는 변수입니다.
// System.out.printf("i = %d\n", i);
for( int i = 1 ; i <= 3 ; i++ ) {
System.out.printf("i = %d\n", i);
}
반복문을 활용한 값의 누적!!!
// 1 ~ 10 까지 정수들의 합계를 구해서 출력하세요.
// 1 + 2 + 3 + ... + 10 = ?
for( int i = 1, sum = 0 ; i < 101 ; i++ ) {
sum += i; // sum = sum + i;
System.out.printf("i = %d, sum = %d\n", i, sum);
}
// 컴파일 에러 발생
// sum 변수는 for 문이 종료되면서 소멸되었기 때문에
// System.out.printf("1 ~ 100까지의 합계는 %d 입니다.\n", sum);
// 값의 누적을 위해서는 반복문 내부에 누적 변수를 선언하지 않고
// 반복문 외부에서 선언합니다.
// 누적된 값을 반복문 외부에서 사용할 수 있도록..
int sum = 0;
for( int i = 1 ; i < 101 ; i++ ) {
sum += i; // sum = sum + i;
System.out.printf("i = %d, sum = %d\n", i, sum);
}
System.out.printf("1 ~ 100까지의 합계는 %d 입니다.\n", sum);
1 ~ 100 까지의 정수 중,
3의 배수 또는 7의 배수들의 합계를 계산하여 출력하세요
// 1 ~ 100 까지의 정수 중,
// 3의 배수 또는 7의 배수들의 합계를 계산하여 출력하세요.
// 누적에 사용할 변수는 반드시 초기화가 되어야 합니다.(0)
int sum = 0;
for( int i = 1 ; i <= 100 ; i++ ) {
// 특정 수의 배수 여부를 판단할 때, 나머지 연산을 활용합니다.
if( i % 3 == 0 || i % 7 == 0 )
sum += i;
}
System.out.printf("1 ~ 100까지의 정수 중, 3, 7의 배수 합계는 %d 입니다.\n", sum);
사용자에게 정수 3개를 입력받습니다.
입력된 정수의 합계와 가장 큰 수, 가장 작은 수를 출력하세요.
import java.util.Scanner;
public class Control_Statement_For_05 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 사용자에게 정수 3개를 입력받습니다.
// 입력된 정수의 합계와 가장 큰 수, 가장 작은 수를 출력하세요.
// 1. 입력과 처리
// - 변수의 선언
int number;
// 주의사항!! 합계에 사용될 변수는 반드시 초기화가 되어야합니다.
int tot = 0, max = 0, min = 0;
// 반복문을 활용한 값의 입력
for( int i = 1 ; i <= 3 ; i++ ) {
System.out.printf("%d번째 정수 입력하세요 : ", i);
number = in.nextInt();
// 반복을 수행하는 과정에서 값을 누적(합계)
tot += number;
// 반복을 수행하면서 최대/최소값을 비교
// 중요!!!
// 최대와 최소의 기준은 주어진 값 중에서 설정해야합니다.
if( i == 1 )
max = min = number;
else {
if( number > max )
max = number;
if( min > number )
min = number;
}
}
System.out.printf("입력된 정수들의 합계는 %d 입니다.\n", tot);
System.out.printf("입력된 정수 중, 최대값은 %d 입니다.\n", max);
System.out.printf("입력된 정수 중, 최소값은 %d 입니다.\n", min);
}
}
반복문을 종료하는 방법
// 반복문을 종료하는 방법
// - 기본적으로 반복문은 조건이 거짓이 될때까지 실행문을 실행합니다.
// - 아래의 반복문은 조건이 항상 true 이므로 반복문이 종료되지 않습니다.(무한반복)
/*
for( int i = 1 ; i <= 10 ; ) {
System.out.println(i);
}
*/
// - 만약 반복을 수행하는 도중, 반복문의 조건이 false가 아니더라도
// 종료를 바라는 경우 break 키워드를 사용할 수 있습니다.
// break 키워드
// - if문을 제외한 첫번째 블럭(영역)을 빠져나가는 명령
// - switch, 모든 반복문에서 사용
// - 반복문에 break를 사용하는 경우 반복문의 강제 종료를 의미합니다.
for( int i = 1 ; i <= 15 ; i++ ) {
if( i > 10 ) {
break;
}
System.out.printf("i = %d\n", i);
}
반복문 for문 문제
import java.util.Scanner;
public class Control_Statement_For_06_EX {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 아래와 같이 동작하는 프로그램을 작성하세요.
// 좌항의 정수를 입력하세요 : 50
// 부호를 입력하세요 : +
// 우항의 정수를 입력하세요 : 20
// 결과 : 50 + 20 = 70
// 계속하시겠습니까?(y/n) : y
// 좌항의 정수를 입력하세요 : 50
// 부호를 입력하세요 : +
// 우항의 정수를 입력하세요 : 20
// 결과 : 50 + 20 = 70
// 계속하시겠습니까?(y/n) : n
// 프로그램 종료
// 1. 입력과 처리
// - 변수 선언
int leftNum, rightNum;
char op;
int result;
char isEnd;
// - 입력 과정과 처리 과정의 작성
// (무한반복의 형태로 처리)
for(;;) {
System.out.print("좌항의 정수를 입력하세요 : ");
leftNum = in.nextInt();
System.out.print("부호를 입력하세요 : ");
// 문자(char)를 입력받는 방법
// - 문자열을 입력받은 후, 첫번째 글자를 추출하는 방식
op = in.next().charAt(0);
System.out.print("우항의 정수를 입력하세요 : ");
rightNum = in.nextInt();
switch( op ) {
case '+' : result = leftNum + rightNum; break;
case '-' : result = leftNum - rightNum; break;
case '*' : result = leftNum * rightNum; break;
case '/' : result = leftNum / rightNum; break;
case '%' : result = leftNum % rightNum; break;
default :
op = '?';
result = 0;
}
if( op != '?' )
System.out.printf("결과 : %d %c %d = %d\n", leftNum, op, rightNum, result);
else
System.out.println("잘못된 부호가 입력되었습니다.");
// 반복문의 강제 종료를 위한 처리 과정
System.out.print("계속하시겠습니까?(y/n) : ");
isEnd = in.next().charAt(0);
// 대소문자를 같이 비교해야만 오작동을 방지할 수 있습니다.
if( isEnd == 'n' || isEnd == 'N' )
break;
}
System.out.println("프로그램 종료!");
}
}
728x90
반응형
'개발 > JAVA' 카테고리의 다른 글
자바 - 반복문 중첩(이중)for문 (3) (0) | 2020.06.14 |
---|---|
자바 - 반복문 for 문, continue (0) | 2020.06.14 |
자바 - 제어문 switch문 (0) | 2020.06.14 |
자바 - 제어문 if문, if ~ else 문, (0) | 2020.06.14 |
java - 연산자, 전위/후위 증가/감소 연산자,비트(BIT) 연산자,시프트 연산자,삼항연산자 (0) | 2020.06.14 |