프로그램 명령이 실행되는 순서를 제어하는 명령문
조건문 : 조건이 참인지 거짓인지에 따라서 실행 명령을 분리하는 것
반복문 : 조건이 참인 동안 명령들을 반복 수행하는 것
순차구조 : 기본 구조로 명령문 하나씩 위에서 아래로 순차적으로 실행
선택구조 : 조건식의 참과 거짓에 따라 명령문들을 분리하여 실행
반복구조 : 조건식이 참인 동안 여러문들을 실행
참과 거짓을 구분하여 실행하는 명령어 블록은 중괄호({})로 표시
참과 거짓을 구분하여 실행하는 명령어가 한 개일 경우는 중괄호({}) 생략 가능
if 조건문의 명령어 블록 내부에 또다시 if 조건문을 사용할 수 있음(중첩 가능)
중괄호({}) 내부에 선언된 변수는 중괄호({})안에서만 사용가능ㄴ
중괄호({}) 외부에 선언된 변수는 내부에서 사용할 수 있음
조건식에는 세미콜론(;)을 붙이지 않음
if()~else if()문 또는 if()~else if()~else문의 복잡성의 단순화
case문, break문, default문으로 구성됨
반복적으로 명령문을 실행시킬 수 있는 문장(중복성 제거, 간결해 짐)
반복문 내부에 또 다른 반복문을 사용할 수 있음(중첩 사용)
반복문의 종류-for문:반복 횟수가 정해져 있는 경우
-while문, do~while문:반복 횟수가 정해지지 않는 경우
초기식 : 반복하고자 하는 블록을 반복하기 전에 초기식을 설정하는 수식
조건식 : 반복여부를 판단하는 수식으로 조건식이 참인 경우 블록을 실행하고, 거짓인 경우 반복을 종료
증감식 : 반복 블록을 한 번 실행한 후에 실행되는 증감 수식
반복 횟수가 미리 정해지지 않은 경우 주로 사용
조건식이 참인 동안 실행되는 반복문
초기식은 while 반복문이 시작되기 전에 선언
증감식은 while 반복무늬 중괄호({})의 마지막에 선언
초기식과 증감식은 필요에 따라 생략 가능
반복횟수가 미리 정해지지 않은 경우 주로 사용
초기식은 do~while 반복문이 시작되기 전에 선언
증감식은 do~while 반복문의 중괄호({})의 마지막에 선언
초기식과 증감식은 필요에 따라 생략 가능
조건식과 상관없이 중괄호({}) 내부의 명령문들이 먼저 한번 실행된 후 조건식이 실행됨 (while 반복문과의 차이점)
import java.util.Scanner;
public class ConIf {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner s = new Scanner(System.in);
int input;
// 단순 if()문
System.out.print("[단순 if()문 연습] 숫자를 입력하세요 : ");
input = s.nextInt();
if (input == 10)
{
input += 2;
}
input += 3;
System.out.println("계산된 값은 :"+input);
/* if문 단순화
if(input == 10) {
input +=2;
}
if(input == 10)
input += 2;
if(input == 10) input += 2;
*/
// if()~else문
System.out.print("[if()~else문 연습] 숫자를 입력하세요 : ");
input = s.nextInt();
if (input < 10)
{
input += 2;
}
else
{
input -= 2;
}
input += 3;
System.out.println("계산된 값은 : "+input);
/* if()~else 문 단순화
if (input < 10) {
input += 2;
} else {
input -= 2;
}
if (input < 10)
input += 2;
else
input -= 2;
if (input < 10) input += 2;
else input -= 2;
*/
// if()~else if()문
char result = 'F';
System.out.print("[if()~else if()문 연습] 숫자(점수)를 입력하세요 : ");
input = s.nextInt();
if (input >= 90)
{
result = 'A';
}
else if( input >= 80)
{
result = 'B';
}
else if (input >= 70)
{
result = 'C';
}
System.out.println(input+" 점은 "+result+" 학점입니다.");
// if()~else if() ~ else 문
System.out.print("[if()~else if() ~ else 문 연습] 숫자(점수)를 입력하세요 : ");
input = s.nextInt();
if (input >= 90)
{
result = 'A';
}
else if (input >= 80)
{
result = 'B';
}
else
{
result = 'F';
}
System.out.println(input+" 점은 "+result+" 학점입니다.");
s.close();
}
}
<Result>
[단순 if()문 연습] 숫자를 입력하세요 : 60
계산된 값은 :63
[if()~else문 연습] 숫자를 입력하세요 : 80
계산된 값은 : 81
[if()~else if()문 연습] 숫자(점수)를 입력하세요 : 81
81 점은 B 학점입니다.
[if()~else if() ~ else 문 연습] 숫자(점수)를 입력하세요 : 91
91 점은 A 학점입니다.
import java.util.Scanner;
public class ConSwitch {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner s = new Scanner(System.in);
// 숫자를 문자로 변경하는 프로그램
int input;
System.out.print("[숫자를 문자로 변경] 숫자를 입력하세요(1~3) : ");
input = s.nextInt();
switch (input)
{
case 1:
System.out.println("ONE");
break;
case 2:
System.out.println("TWO");
//break; // 생략하면 어떻게 될까요?
case 3:
System.out.println("THREE");
break;
default:
System.out.println("ERROR");
break;
}
// 홀수와 짝수를 구분하는 프로그램
System.out.print("[홀수와 짝수 구분하기] 숫자를 입력하세요 : ");
input = s.nextInt();
switch (input % 2)
{
case 0:
System.out.println(input+"는 짝수입니다.");
break;
case 1:
System.out.println(input+"는 홀수입니다.");
break;
}
}
}
<Result>
[숫자를 문자로 변경] 숫자를 입력하세요(1~3) : 1
ONE
[홀수와 짝수 구분하기] 숫자를 입력하세요 : 2
2는 짝수입니다.
public class ConFor {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("[동일한 문장 반복하여 3번 출력하기]");
for (int cnt = 0; cnt < 3; cnt++)
{
System.out.println("Hello");
}
// System.out.println("Hello");
// System.out.println("Hello");
// System.out.println("Hello");
// for (int cnt = 0; cnt < 3; cnt++)
// System.out.println("Hello");
System.out.println("[1에서 10까지 출력, 합계출력]");
int sum = 0;
for (int cnt = 1; cnt <=10 ; cnt++)
{
System.out.print(cnt+" ");
sum += cnt;
}
System.out.println("1~10까지의 합계는 "+sum);
System.out.println("[10에서 1까지 출력]");
for (int cnt = 10; cnt > 0; cnt--)
{
System.out.print(cnt+" ");
}
System.out.println();
System.out.println("[1에서 10까지 짝수만 출력]");
for (int cnt = 2; cnt <= 10; cnt+=2)
{
System.out.print(cnt+" ");
}
System.out.println();
System.out.println("[1에서 10까지 홀수만 출력]");
for (int cnt = 1; cnt <= 10; cnt+=2)
{
System.out.print(cnt+" ");
}
System.out.println();
System.out.println("[구구단 2단 출력]");
for (int cnt = 1; cnt <= 9; cnt++)
{
System.out.println("2 * "+cnt+" = "+(2*cnt));
}
System.out.println("[구구단 출력]");
for (int dan = 2; dan <= 9; dan++)
{
for (int cnt = 1; cnt <= 9; cnt++)
{
System.out.print(dan+"*"+cnt+"="+(dan*cnt)+" ");
}
System.out.println();
}
}
}
<Result>
[동일한 문장 반복하여 3번 출력하기]
Hello
Hello
Hello
[1에서 10까지 출력, 합계출력]
1 2 3 4 5 6 7 8 9 10 1~10까지의 합계는 55
[10에서 1까지 출력]
10 9 8 7 6 5 4 3 2 1
[1에서 10까지 짝수만 출력]
2 4 6 8 10
[1에서 10까지 홀수만 출력]
1 3 5 7 9
[구구단 2단 출력]
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18
[구구단 출력]
2*1=2 2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18
3*1=3 3*2=6 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27
4*1=4 4*2=8 4*3=12 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 6*7=42 6*8=48 6*9=54
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 7*8=56 7*9=63
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 8*9=72
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
import java.util.Scanner;
public class ConWhile {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner s = new Scanner(System.in);
int cnt = 1;
int sum = 0;
System.out.println("[1에서 10까지 출력하고, 합계 출력하기]");
while (cnt <= 10) {
System.out.print(cnt+" ");
sum += cnt++;
}
System.out.println("누적합계는 "+sum+"입니다.");
System.out.println("[1에서 100까지 누적합계가 100이 넘어가는 숫자 출력하기]");
cnt = 0;
sum = 0;
while (sum < 100)
{
cnt++;
sum += cnt;
}
System.out.println("count = "+cnt+" sum = "+sum);
System.out.println("[정수값을 반복해서 입력받아 화면에 출력(0입력시 종료)]");
int input;
while (true) // 무한반복
{
System.out.print("숫자를 입력하세요(0은 종료) : ");
input = s.nextInt();
if (input == 0) break; // 0 입력시 반복문 종료, 0이 아니면 반복
System.out.println("입력받은 값은 = "+input);
}
System.out.println("[입력받은 값이 짝수이면 누적 합계, 홀수이면 다시 입력 받기(0입력시 종료)]");
input = sum = 0;
while (true)
{
System.out.print("숫자를 입력하세요(0은 종료) : ");
input = s.nextInt();
if (input == 0) break; // 0 입력시 반복문 종료, 0이 아니면 반복
if ((input % 2)==1) continue; // 홀수이면 반복
sum += input; // 짝수인 경우에는 누적합계
}
System.out.println("짝수 합계는 "+sum);
}
}
<Result>
[1에서 10까지 출력하고, 합계 출력하기]
1 2 3 4 5 6 7 8 9 10 누적합계는 55입니다.
[1에서 100까지 누적합계가 100이 넘어가는 숫자 출력하기]
count = 14 sum = 105
[정수값을 반복해서 입력받아 화면에 출력(0입력시 종료)]
숫자를 입력하세요(0은 종료) :
1)do~while 문으로 메뉴를 구현하시오
-메뉴:구구단(1), 누적합계(2), 성적(3), 종료(0)
2)구구단은 2단에서 9단까지만 실행하시오.(for문 사용)
3)누적합계는 1부터 누적합계를 하시오.(while문 사용)
4)성적등급을 출력하시오.(A~F)(switch~case문 사용)
import java.util.Scanner;
public class ConTotal {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner s = new Scanner(System.in);
do {
System.out.print("구구단(1), 누적합계(2), 성적(3), 종료(0) : ");
int menu = s.nextInt();
if( menu == 0 ) break; // 종료
else if( menu == 1 ) { // 구구단
System.out.print("단수를 입력하시오 : ");
int dan = s.nextInt();
if(dan>=2 && dan <=9) { // 단수가 2~9 사이이면
for(int i=1; i<=9; i++) // 구구단 출력
System.out.print(dan+"*"+i+"="+(dan*i)+" ");
System.out.println();
} else System.out.println("2에서 9사이를 입력하시오!!");
} else if( menu == 2 ) { // 누적합계
System.out.print("누적합계를 원하는 최종값을 입력하시오 : ");
int last = s.nextInt();
int sum = 0;
int cnt = 1;
while(cnt <= last) sum += cnt++;
System.out.println("1에서 "+last+"까지의 누적합계는 "+sum+"입니다.");
} else if( menu == 3 ) { // 성적
System.out.print("점수를 입력하시오 : ");
int jumsu = s.nextInt();
switch(jumsu/10) {
case 10:
case 9:
System.out.println("A학점!!");
break;
case 8:
System.out.println("B학점!!");
break;
case 7:
System.out.println("C학점!!");
break;
case 6:
System.out.println("D학점!!");
break;
default:
System.out.println("F학점!!");
break;
}
}
} while(true);
}
}
<Result>
구구단(1), 누적합계(2), 성적(3), 종료(0) : 1
단수를 입력하시오 : 23
2에서 9사이를 입력하세요!
구구단(1), 누적합계(2), 성적(3), 종료(0) : 1
단수를 입력하시오 : 3
3*1=3 3*2=6 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27
구구단(1), 누적합계(2), 성적(3), 종료(0) : 2
누적합계를 원하는 최종값을 입력하시오 : 100
1에서 100까지의 누적합계는 5050입니다.
구구단(1), 누적합계(2), 성적(3), 종료(0) : 3
점수를 입력하시오 : 98
A학점!!
구구단(1), 누적합계(2), 성적(3), 종료(0) : 0