반복해서 실행해야 할 때 사용하는 명령문
반복되는 일을 처리하기 위해 사용하는 명령문
반복문의 종류
while 반복문, do ~ while 반복문, for 반복문
형식)
while(조건식){
반복 실행 문장;
}
- 하나하나 출력해야 되는 출력문들을
public class WhileExam_16 {
public static void main(String[] args) {
System.out.println("su >>> " + 1);
System.out.println("su >>> " + 2);
System.out.println("su >>> " + 3);
System.out.println("su >>> " + 4);
System.out.println("su >>> " + 5);
System.out.println("su >>> " + 6);
System.out.println("su >>> " + 7);
System.out.println("su >>> " + 8);
System.out.println("su >>> " + 9);
System.out.println("su >>> " + 10);
System.out.println();
}
}
- while 반복문을 이용하여 쉽게 출력 가능
public class WhileExam_16 {
public static void main(String[] args) {
// while 반복문을 이용하여 1 ~ 10 까지 출력
int num = 1; // 반복문에서 초기식
while(num <= 10) { // 반복문에서 조건식
System.out.println("num >>> " + num);
num++; // 반복문에서 증감식 - 단항연산자
} // while 반복문 end
}
}
- while 반복문을 이용하여 1 ~ 10 까지의 합을 구해 보자
public class WhileExam_17 {
public static void main(String[] args) {
// 1. 변수 선언 - 초기식 변수, 합을 저장할 변수
int su = 1; // 반복문에서의 초기식
int sum = 0; // 1 ~ 10까지 합을 저장할 변수
while(su <= 10) { // 반복문에서의 조건식
sum += su; // sum = sum + su
su++; // 반복문에서의 증감식
}
System.out.println("1 ~ 10 까지의 합 >>> " + sum);
}
}
[문제1] 1 ~ 100 까지의 짝수의 합과 홀수의 합을 구하여 화면에 보여주세요
public class WhileExam_18 {
public static void main(String[] args) {
// 1. 사용될 변수 선언
int x = 1; // 반복문에서의초기식
int sum = 0; // 짝수의 합
int sum2 = 0; // 홀수의 합
while(x <= 100) { // 반복문에서의 조건식
if(x %2 == 0) {
// 참인 경우 ==> 짝수인 경우
sum = sum + x;
} else {
// 거짓인 경우 ==> 홀수인 경우
sum2 += x;
}
x++; // 반복문에서의 증감식
} // while 반복문 end
System.out.println("짝수 합 >>> " + sum );
System.out.println("홀수 합 >>> " + sum2 );
}
}
[문제2] ABCDEFGHIJKLMN...XYZ까지, ZYXWV...EDCBA까지 문자 출력
public class WhileExam_19 {
public static void main(String[] args) {
// ABCDEFGHIJKLMN...XYZ까지 문자를 출력해 보자
char alpha = 'A'; // 반복문에서 초기식
while (alpha <= 'Z') { // 반복문에서 조건식
System.out.print(alpha);
alpha++; // 반복문에서 증감식
}
System.out.println();
//ZYXWV...EDCBA까지 문자를 출력해 보자
char alpha2 = 'Z'; // 반복문에서 초기식
while (alpha2 >= 'A') { // 반복문에서 조건식
System.out.print(alpha2);
alpha2--; // 반복문에서 증감식
}
}
}
[문제3] 1 ~ 100 사이의 정수 중에서 키보드로 5개의 정수를 입력을 받아서 5개의 정수 중에서 최대값을 화면에 보여주세요
import java.util.Scanner;
public class WhileExam_20 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int max = 0; // 최대값이 저장될 변수
int temp = 0, su = 1;
while(su <= 5) { // 반복조건문의 조건식
System.out.print(su + "번째 정수 입력 : ");
temp = sc.nextInt();
if(temp > max) { // 조건문 조건식
max = temp;
}
su++;
}
System.out.println("최대값 >>> " + max);
sc.close();
}
}
먼저 반복 실행문을 실행을 하고 난 후 조건식을 비교함
형식 )
do {
반복 실행 문장;
} while(조건식);
- while문과 do ~ while문 차이
public class DoWhileExam_22 {
public static void main(String[] args) {
// 1 ~ 10까지 화면에 출력 - while 반복문
int su = 1;
while (su<=10) { // 조건식이 거짓이면 출력 X == 조건 비교 -> 출력
System.out.println("su >>> " + su);
su++;
}
System.out.println();
// 1 ~ 10까지 화면에 출력 - do ~ while 반복문
int num = 1;
do { // 일단 최소 한 번은 출력이 된 상태 == 출력 -> 조건 비교
System.out.println("num >>> " + num);
num++;
} while(num <= 10); // ; 필수
}
}
변수의 값을 이용하여 반복 실행하는 반복문
일정 횟수에 대한 반복을 구현할 때 효율적으로 사용되는 반복문
즉, 반복문의 횟수를 알고 있는 경우에 자주 사용
형식 )
for (초기식; 조건식; 증감식){
반복 실행 문장;
}
[for 반복문 실행 순서]
public class ForExam_23 {
public static void main(String[] args) {
// while 반복문을 이용하여 1 ~ 10까지 출력
int su = 1;
while (su<=10) {
System.out.println("su >>> " + su);
su++;
}
System.out.println();
// for 반복문을 이용하여 1 ~ 10까지 출력
for(int num = 1; num <= 10; num++) {
System.out.println("num >>> " + num);
}
}
}
[문제1] for 반복문을 이용하여 1 ~ 100까지의 홀수의 합과 짝수의 합을 구하여 출력
public class ForExam_24 {
public static void main(String[] args) {
int sum = 0, sum2 = 0;
for(int i = 1; i <= 100; i++) {
if (i %2 != 0) {
sum += i;
} else {
sum2 += i;
}
}
System.out.println("홀수의 합 >>> " + sum);
System.out.println("짝수의 합 >>> " + sum2);
}
}
[문제2] for 반복문을 이용하여 키보드로 입력받은 수까지의 홀수의 합과 짝수의 합을 구하여 화면에 보여주세요.
import java.util.Scanner;
public class ForExam_25 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("최대 정수 입력 : ");
int j = sc.nextInt();
int sum = 0, sum2 = 0;
for (int i = 1; i <= j; i++) {
if (i %2 != 0) {
sum += i;
} else {
sum2 += i;
}
}
System.out.println("홀수의 합 >>> " + sum);
System.out.println("짝수의 합 >>> " + sum2);
sc.close();
}
}
[문제3] 신장별 표준 체중 대응표를 만들어 보자
import java.util.Scanner;
public class ForExam_26 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("몇 cm 부터 표시를 할까요? : ");
int start = sc.nextInt();
System.out.print("몇 cm 까지 표시를 할까요? : ");
int end = sc.nextInt();
System.out.print("몇 cm 단위로 표시를 할까요? : ");
int step = sc.nextInt();
System.out.println();
for (int i = start; i <= end; i += step) {
System.out.printf("%dcm\t%.1fkg\n",i,((i - 100)*0.9));
}
sc.close();
}
}
형식 )
for(초기식1; 조건식1; 증감식1){
반복 실행 문장;
for(초기식2; 조건식2; 증감식2){
반복 실행 문장;
}
}
public class ForExam_27 {
public static void main(String[] args) {
for(int i = 1; i <= 3; i++) {
for(int j = 1; j <= 4; j++) { // 먼저 증가 반복
System.out.println("[" + i + "," + j + "]");
}
System.out.println();
}
}
}
[문제1] 다중 for문을 이용하여 구구단을 만들어 보자
public class ForExam_28 {
public static void main(String[] args) {
for(int dan = 2; dan <= 9; dan++) { // 구구단에서의 단
System.out.println("***" + dan + "단 ***");
for (int su = 1; su <= 9; su++) { // 구구단에서의 수
System.out.println(dan + " * " + su + " = " + (dan * su));
} // 안쪽 for문의 end
System.out.println();
} // 바깥쪽 for문의 end
System.out.println();
System.out.println();
for(int su1 = 1; su1 <= 9; su1++) { // 구구단에서의 수
for (int dan1 = 2; dan1 <= 9; dan1++) { // 구구단에서의 단
System.out.print(dan1 + " * " + su1 + " = " + ( dan1 * su1 ) +"\t");
} // 안쪽 for문의 end
System.out.println();
} // 바깥쪽 for문의 end
}
}
[문제2] 아래와 같이 화면에 출력을 해 보자

public class ForExam_29 {
public static void main(String[] args) {
// 1번 별찍기
for(int i = 1; i <= 4; i++) { // 별찍기에서의 행
for(int j = 1; j < 8; j++) { // 별찍기에서의 열
System.out.print("*");
}
System.out.println();
}
System.out.println();
// 2번 별찍기
for(int i = 1; i <= 5; i++) { // 별찍기에서의 행
for(int j = 1; j <= i; j++) { // 별찍기에서의 열
System.out.print("*");
}
System.out.println();
}
System.out.println();
// 3번 별찍기
for(int i = 5 ; i >= 1; i--) { // 별찍기에서의 행
for(int j = 1; j <= i; j++) { // 별찍기에서의 열
System.out.print("*");
}
System.out.println();
}
}
}
public class BreakExam_30 {
public static void main(String[] args) {
for(int i = 1; i <= 100; i++) {
if(i>50) { // 51이 되면
break;
}
System.out.println("i >>> " + i);
}
System.out.println();
// 1 ~ 100까지의 합을 구해 보자
int su = 1, sum = 0;
while(true) { // 무한반복
if(su > 100) { //101
break;
}
sum += su;
su++;
}
System.out.println("sum >>> " + sum);
}
}
public class ContinueExam_31 {
public static void main(String[] args) {
for(int i = 1; i <= 10; i++) {
if(i %2 == 1) {
continue;
}
System.out.println("i >>> " + i);
}
// 1 ~ 100 까지의 합을 구해 보자
int sum = 0;
for (int i = 1; i <= 100; i++) {
if(i %2 == 1) {
continue;
}
sum += i;
}
System.out.println("sum >>> " + sum);
}
}
[문제1] 지방(fat), 탄수화물(carbohydrate), 단백질(protein) 칼로리의 합계를 계산하는 프로그램

import java.util.Scanner;
public class Exam_02_01 {
public static void main(String[] args) {
Scanner sc = new Scanner (System.in);
System.out.print("지방의 그램을 입력하세요 : ");
int a = sc.nextInt();
System.out.print("탄수화물의 그램을 입력하세요 : ");
int b = sc.nextInt();
System.out.print("단백질의 그램을 입력하세요 ");
int c= sc.nextInt();
System.out.println();
// 총 칼로리 = 지방*9 + 단백질*4 + 탄수화물*4
int t = a*9 + b*4 + c*4;
System.out.printf("총 칼로리 : %,d kcal\n ",t);
//,d를 사용하면 1000단위에서 반점
sc.close();
}
}
[문제2] 1부터 사용자가 입력한 수까지의 합 구하기 (예 : 100을 입력하면 1에서 100까지의 홀수 합과 짝수 합계 출력)

import java.util.Scanner;
public class Exam_02_01 {
public static void main(String[] args) {
Scanner sc = new Scanner (System.in);
System.out.print("지방의 그램을 입력하세요 : ");
int a = sc.nextInt();
System.out.print("탄수화물의 그램을 입력하세요 : ");
int b = sc.nextInt();
System.out.print("단백질의 그램을 입력하세요 ");
int c= sc.nextInt();
System.out.println();
// 총 칼로리 = 지방*9 + 단백질*4 + 탄수화물*4
int t = a*9 + b*4 + c*4;
System.out.printf("총 칼로리 : %,d kcal\n ",t);
//,d를 사용하면 1000단위에서 반점
sc.close();
}
}
[문제3] 다중 for문을 적용하여 다음과 같은 출력결과가 나타나도록 하시오

public class Exam_02_03_01 {
public static void main(String[] args) {
// 1. 올라가는 별 찍기
for (int i = 1; i<=6; i++) { // 바깥쪽 for 문 ==> 행의 수
for ( int j = 1; j <= i; j++) { // 안쪽 for 문 ==> 열의 수
System.out.print("*");
}
System.out.println();
}
// 2. 내려가는 별 찍기
for (int i = 5; i>=1; i--) { // 바깥쪽 for 문 ==> 행의 수
for ( int j = 1; j <= i; j++) { // 안쪽 for 문 ==> 열의 수
System.out.print("*");
}
System.out.println();
}
}
}
import java.util.Scanner;
public class Exam_02_03_02 {
public static void main(String[] args) {
// 다중 for 문 한번으로 출력
Scanner sc = new Scanner(System.in);
System.out.println("별의 최대 갯수를 입력하세요 : ");
int starCount = sc.nextInt();
int line; // 별을 찍을 전체 라인 수
// 전체 라인 수 ==> (입력받은 최대 별의 수 * 2) -1
for(int i = 1; i <= (starCount*2-1); i++) {
line = (i <= starCount) ? i : (starCount*2 - i);
// 참이면 i값이 line에 들어감
// 거짓이면 (starCount*2 - i)로 계산한 값이 i
for(int j = 1; j <= line; j++) {
System.out.println("*");
}
System.out.println();
}
sc.close();
}
}
[문제4] 다중 for문을 적용하여 다음과 같은 출력결과가 나타나도록 하시오.

public class Exam_02_04 {
public static void main(String[] args) {
for (char c = 'Z'; c >= 'A'; c--) {
for(char ch = 'A'; ch <= c; ch++) {
System.out.print(ch);
}
System.out.println();
}
System.out.println();
// 유니코드
for(int i = 90; i >= 65; i--) {
for(int j = 65; j <= i; j++) {
System.out.print((char)j);
}
System.out.println();
}
}
}
[문제5] 1 – 2 + 3 – 4 + 5 – 6 + 7 – 8 + 9 – 10 ……… - 100을 실행한 결과값을 화면에 출력해 보세요

public class Exam_02_05 {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 100; i++) {
if(i %2 == 0) {
sum = sum + (-i); // sum = sum - i;
} else {
sum += i;
}
}
System.out.println("hap ==> " + sum);
}
}
[문제6] coffee 메뉴를 키보드로 입력을 받고 주문수량과
입금액을 입력하면 아래 화면과 같이 출력되게 하세요.
※ 총금액에는 부가세가 포함된 금액이 나와야 함
import java.util.Scanner;
public class Exam_02_06 {
public static void main(String[] args) {
System.out.println("*** coffee 메뉴 ***");
System.out.println("1. 아메리카노 - 3,000원");
System.out.println("2. 카페라떼 - 4,000원");
System.out.println("3. 마키아또 - 4,500원");
System.out.println("4. 바닐라라떼 - 4,500원");
Scanner sc = new Scanner(System.in);
System.out.print("위 메뉴 중 하나를 선택하세요 : ");
int num = sc.nextInt();
System.out.print("주문수량 >> ");
int su = sc.nextInt();
System.out.print("입금액 >> ");
int pay = sc.nextInt();
//커피 종류가 저장될 문자열 변수
String name = null; // String name = "";
int price = 0; // 커피금액
switch(num) {
case 1 :
name = "아메리카노";
price = 3000;
break;
case 2 :
name = "카페라떼";
price = 4000;
break;
case 3 :
name = "마키아또";
price = 4500;
break;
case 4 :
name = "바닐라라떼";
price = 4500;
break;
}
// 공급가액 계산 단가 * 수량
int sum = su * price;
// 부가세액 계산 공급가액 * 0.1
int vat = (int) (sum * 0.1);
// 총급액 계산 공급가액 + 부가세액
int total = sum + vat;
// 거스름돈 계산 입금액 - 총금액
int charge = pay - total;
// 결과 출력
System.out.println("주문한 메뉴 : "+ name);
System.out.printf("커피 단가 : %,d원 \n", price);
System.out.println("주문 수량 : " + su);
System.out.printf("입금액 : %,d원 \n", pay);
System.out.printf("총금액 : %,d원 \n",total);
System.out.printf("거스름 돈 : %,d원 \n", charge);
sc.close();
}
}