BLOG ARTICLE jsp | 28 ARTICLE FOUND

  1. 2009.03.09 continue, break 문 1
  2. 2009.03.09 while, do 문
  3. 2009.03.09 for 문
  4. 2009.03.09 switch 문 1
  5. 2009.03.05 if 문

for, while, do 문과 같은 반복문에서 continue, break 와 같은 문장을 사용 반복문의 수행을 제어할 수 있다. 앞서 switch 문을 다룰 때 switch 문을 빠져 나가는 데 break 문이 사용된다고 언급하였다. 반복문에서도 break 문은 반복구간을 빠져 나가는 데 사용된다. break 문이 반복구간 내부에서 사용되면 반복구간 내 break 이하의 코드들은 무시하고 반복구간을 빠져나가 반복구간 이하의 코드들을 수행하도록 한다. 따라서 조건식이 만족되어도 반복구간을 빠져나가고 싶다면 반복구간 내의 적당한 위치에 break 문을 위치시키면 된다. 반면 continue 문이 반복구간 내에서 사용되면 continue 이하의 코드들은 수행하지 않고 조건식으로 분기 참/거짓 결과에 따라 반복구간 수행 여부를 결정한다. 다음 순서도는 for, while, do 문에서 break, continue 문이 사용됐을 경우의 흐름을 보여주고 있다.

for문의 경우 반복구간 내부에서 break를 만나면 즉시 수행을 멈추고 반복구간을 빠져 나간다. 그어나 continue를 만나면 증감식을 수행하고 조건식의 결과에 따라 반복구간을 수행여부를 판단한다.

사용자 삽입 이미지

for 문에서의 break, continue의 제어흐름


반면 while과 do 반복문의 반복구간에서는 break의 경우 for 문에서와 같이 즉시 반복구간을 빠져 나가지만 continue의 경우 조건식으로 분기 조건식의 결과에 따라 반복구간 수행 여부를 결정한다.

사용자 삽입 이미지

while 문에서의 break, continue의 제어흐름

사용자 삽입 이미지

do 문에서의 break, continue의 제어흐름


다음 프로그램 "for-cb.jsp"는 for 반복문에서 break와 continue를 사용한 예이다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
int i;

for (i = -2; i <= 100; i ++) {
    if (i == 0) continue;
    if (i > 2) break;
    out.println( 100 / i );
}

out.println(i);
%>
</body>
</html>


사용자 삽입 이미지

for-cb.jsp 실행결과


우선 초기식, 조건식, 증감식을 고려했을 때 반복구간은 변수 "i"의 값이 -2에서 100까지 1씩 증가하며 총 103회 수행하도록 작성되었다. 그러나 변수 "i"의 값이 0이 되는 순간 continue를 수행하게 되므로 이하의 코드

if (i > 2) break;
out.println( 100 / i );

는 무시하고 증감식에 의해 "i" 가 1이 되고 계속 반복구간을 수행한다. 그리고 "i"가 3이 되면 break를 수행 반복구간을 빠져나간다.

다음 프로그램 "while-err-cb.jsp"를 살펴보자.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
int i;

i = -2;
while (i <= 10) {
    if (i == 0) continue;
    if (i > 2) break;
    out.println( 100 / i );
    i ++;
}

out.println(i);
%>
</body>
</html>


이 프로그램의 실행 결과는 무한루프에 빠지게 되는 오류를 가지고 있다. 그 원인은

if (i == 0) continue;

부분에서 비롯된다. 이 프로그램에서는 변수 "i"가 10 이하인 경우 반복구간을 수행한다. 그러나 "i"가 0이 됐을 경우를 살펴보자. "i"가 0이 되면 continue를 수행하게 된다. 따라서 continue에 의해 이하의 코드

if (i > 2) break;
out.println( 100 / i );
i ++;

은 실행되지 않고 조건식을 검사하게 되는데 이 때 여전히 "i"의 값은 0이므로 무한히 continue를 실행하게 되므로 무한루프에 빠지게 되는 것이다. 따라서 이 경우

if (i == 0) continue;

부분을 다음과 같이 수정하면 무한루프에 빠지는 오류를 수정할 수 있다.

if (i == 0) {
    i ++;
    continue;
}

이 경우 continue를 수행하기 전 "i ++"에 의해 "i" 값이 0에서 1로 변하므로 continue는 더 이상 실행하지 않게된다. 다음 프로그램 "while-cb.jsp"는 "while-err-cb.jsp" 프로그램을 올바르게 수정 실행한 것이다.


<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
int i;

i = -2;
while (i <= 10) {
    if (i == 0) {
        i ++;
        continue;
    }
    if (i > 2) break;
    out.println( 100 / i );
    i ++;
}

out.println(i);
%>
</body>
</html>


사용자 삽입 이미지

while-cb.jsp 실행결과


다음 프로그램 "do-cb.jsp" 역시 do 문에서 break와 continue를 사용한 예다. 이 프로그램에서도 break와 continue의 제어흐름은 while 문과 같다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
int i;

i = -2;
do {
    if (i == 0) {
        i ++;
        continue;
    }
    if (i > 2) break;
    out.println( 100 / i );
    i ++;
} while (i <= 10) ;

out.println(i);
%>
</body>
</html>


사용자 삽입 이미지

do-cb.jsp 실행결과

'프로그래밍 > JSP' 카테고리의 다른 글

세션  (0) 2009.03.17
쿠키  (0) 2009.03.17
while, do 문  (0) 2009.03.09
for 문  (0) 2009.03.09
switch 문  (1) 2009.03.09
AND

반복문의 또 다른 형태인 while 문과 do 문에 대해서 살펴보자. 먼저 이 두 경우 모두 주어진 조건이 만족하는 경우 특정 구간을 반복 수행한다. 그러나 while 문의 경우 주어진 조건을 먼저 검사한 후 그 결과에 따라 반복구간의 실행 여부를 결정하는 반면, do 문의 경우 반복구간을 먼저 실행한 후 조건식을 검사하여 반복구간을 또 실행 할 것인지 말것인지를 결정한다.

먼저 while 문을 살펴보자. while문의 형식은 다음과 같으며 while 옆 괄호 안에 조건식이 주어진다.

while 구조

형식

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


사용자 삽입 이미지

while - flowchart


while 문은 조건식과 함께 반복구간 앞에 위치해 앞서 언급한 것처럼 조건식을 먼저 검사한 후 반복구간의 수행 여부를 결정한다.

다음 프로그램 "while.jsp"는 1에서 100까지 자연수의 합을 구하는 프로그램으로 앞서 for 문으로 구현한 "for.jsp" 프로그램을 while 문을 이용 수정한 것이다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
int i, sum = 0;

i = 1;
while (i <= 100) {
    sum = sum + i;
    i ++;
}

out.println(sum);
%>
</body>
</html>


사용자 삽입 이미지

while.jsp 실행결과


위 프로그램에서 "i ++"에 의해 결국 조건식이 변화되므로 변수 i의 값이 101이 되는 순간 반복구간을 더 이상 실행하지 않고 빠져나가고 변수 sum에는 5050이 저장되게 된다.

do문을 살펴보자. do 문은 반복구간 뒤에 while과 함께 조건식이 주어지는 구조로 형식은 다음과 같다.

do 구조

형식

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


사용자 삽입 이미지

while~do - flowchart


위 형식과 순서도에서도 알 수 있듯 do 문은 조건식이 반복구간 뒤에 위치한 관계로 최소 한 번 이상 반복구간을 실행한 후 조건식의 결과에 따라 더 실행할 것인지 말것인지를 결정한다.

다음 프로그램 "do.jps" 역시 1에서 100까지 자연수의 합을 구하는 프로그램으로 do 문을 이용 수정한 것이다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
int i, sum = 0;

i = 1;
do {
    sum = sum + i;
    i ++;
} while (i <= 100);

out.println(sum);
%>
</body>
</html>


사용자 삽입 이미지

do.jsp 실행결과


이 프로그램 역시 "while.jsp"와 마찬가지로 반복구간 내부의 "i ++"에 의해 조건식이 변화된다.

그러면 while과 do의 차이점을 아래 두 프로그램 "diff-while.jsp"와 "diff-do.jsp"를 가지고 살펴보자.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
int i, sum = 0;

i = 200;
while (i <= 100) {
    i ++;
}

out.println(i);
%>
</body>
</html>


사용자 삽입 이미지

diff-while.jsp 실행결과


프로그램 "diff-while.jsp"의 실행과정을 살펴보면 변수 "i"에 초기값 200이 저장되어 있다. 그 후 while 문을 실행하는데 while 문의 경우 조건식을 먼저 검사하므로 그 결과가 "200 <= 100"으로 거짓이 되어 반복구간을 실행하지 않고 바로

out.println(i);

부분을 실행한다. 따라서 변수 "i"에는 여전히 200이 저장되어 있으므로 출력결과 역시 "200"이 된다. 반면 다음 프로그램 "diff-do.jsp"의 경우을 살펴보자.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
int i, sum = 0;

i = 200;
do {
    i ++;
} while (i <= 100);

out.println(i);
%>
</body>
</html>


사용자 삽입 이미지

diff-do.jsp 실행결과


이 프로그램의 경우 do 문에 의해 먼저 반복구간을 실행

i ++ ;

에 의해 변수 "i"의 값은 201이 되고 조건식 "201 <= 100"에 의해 거짓이 되므로 더 이상 반복구간을 실행하지 않고 빠져나와

out.println(i);

을 실행 "201"을 출력한다.

'프로그래밍 > JSP' 카테고리의 다른 글

쿠키  (0) 2009.03.17
continue, break 문  (1) 2009.03.09
for 문  (0) 2009.03.09
switch 문  (1) 2009.03.09
if 문  (0) 2009.03.05
AND

for 문

프로그래밍/JSP 2009. 3. 9. 11:38
프로그램의 제어문에서 조건이 참인 동안 특정 구간을 반복 실행하는 제어문을 반복문이라 한다. for 문은 대표적인 반복문으로 형식과 순서도는 다음과 같다.

for 구조

형식

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


사용자 삽입 이미지

for - flowchart


위 형식에서 초기식은 for 문에서 가장 먼저 실행되는 부분으로 단 한번 수행한다. 조건식은 반복구간(위 형식에서 실행코드 부분)을 수행할 것인지 말 것인지를 판단하기 위한 식으로 결과가 참이면 반복구간을 수행하고 거짓인 경우 반복구간을 수행하지 않고 빠져 나온다. 마지막 증감식은 반복구간을 수행한 후 조건식을 비교하기 전 수행하는 식으로 일반적으로 조건식을 변화시키는 코드가 온다.

다음 프로그램 "for.jsp"는 for 문을 이용 1에서 100까지 자연수의 합을 구하는 프로그램이다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
int i, sum = 0;

for(i = 1; i <= 100; i ++) {
    sum = sum + i;
}

out.println(sum);
%>
</body>
</html>


사용자 삽입 이미지

for.jsp 실행결과


위 프로그램에서 변수 i의 값은 1에서 100까지 1씩 증가하며 반복구간의 코드

sum = sum + i ;

를 실행 변수 sum에 누적된 합을 저장하는데 결과적으로 sum에는 5050이 저장되고

out.println(sum) ;

에 의해 5050이 출력된다.

다음 프로그램을 살펴보자. 다음 프로그램 "for-err-inc2.jsp"는 0에서 100까지의 정수 중 짝수의 합을 구하기 위한 프로그램이다. 그러나 이 프로그램을 실행하면 다음과 같이 오류메세지를 출력한다.


<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
int i, sum = 0;

for(i = 0; i <= 100; i + 2) {
    sum = sum + i;
}

out.println(sum);
%>
</body>
</html>

사용자 삽입 이미지

for-err-inc2.jsp 실행결과

오류의 원인은 증감식 때문이다. "for-err-inc2.jsp"에서 변수 i의 값은 초기식에 의해 0이 된다. 그리고 조건식이 "0 <= 100"으로 참이 되므로 반복구간

sum = sum + i ;

가 실행된다. 이 때 sum의 값은 0이므로 "sum = 0 + 0"에 의해 sum에는 다시 0이 저장된다. 그 후에 증감식

i + 2

가 실행되는는 이 때 i 의 값은 0이므로 "0 + 2"이 실행되고 다시 조건식을 비교하게 된다. 그런데 이 때 i의 값은 변화되지 않고 여전히 0이므로 조건식 역시 여전히 "0 <= 100"로 참이된다. 즉 아무리 수행해도 변수 i 값은 변하지 않고 반복구간을 무한히 수행하는 무한루프에 빠지게 되기 때문에 오류 메세지를 출력하는 것이다. 그러므로 증감식 부분을 다음과 같이

i = i + 2 또는 i += 2

로 고침으로써 원하는 결과를 얻을 수 있다. 아래 프로그램 "for-inc2.jsp"는 "for-err-inc2.jsp" 프로그램을 올바르게 수정한 후 실행한 결과이다.


<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
int i, sum = 0 ;

for(i = 0; i <= 100; i = i + 2) {
    sum = sum + i ;
}

out.println(sum);
%>
</body>
</html>


사용자 삽입 이미지

for-inc2.jsp 실행결과


다음 프로그램 "multiply.jsp"를 살펴보자. 이 프로그램을 살펴보면 for문 내부에 다른 for문이 중첩된 경우이다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
int i, j;

for(i = 1; i <= 9; i ++) {
    for(j = 1; j <= 9; j ++) {
        out.println(i * j);
        out.println(" ");
    }
    out.println("<br>");
}%>
</body>
</html>

사용자 삽입 이미지

multiply.jsp 순서도


사용자 삽입 이미지

multiply.jsp 실행결과


프로그램과 순서도를 살펴보면 이 경우 바깥쪽 for 문은 아홉번 실행되는데 바깥쪽 for 문이 한 번 실행될 때마다 안쪽 for 문의

out.println(i * j);
out.println(" ");

부분은 아홉 번 실행되므로 결과적으로 이 부분은 총 81(9 x 9) 회 실행된다.

'프로그래밍 > JSP' 카테고리의 다른 글

continue, break 문  (1) 2009.03.09
while, do 문  (0) 2009.03.09
switch 문  (1) 2009.03.09
if 문  (0) 2009.03.05
설명문  (0) 2009.03.04
AND

switch 문

프로그래밍/JSP 2009. 3. 9. 11:26
switch 문은 주어진 수식의 값을 case 문의 값과 비교하여 일치하는 case 문 이하의 실행코드들을 수행하는 구조로 돼 있으며 형식과 순서도는 다음과 같다.

switch 구조

형식

switch ( 수식 ) {
    case  값1 : 실행코드 1 ;
    case  값2 : 실행코드 2 ;
    case  값3 : 실행코드 3 ;
    default     : 실행코드 4 ;
}

사용자 삽입 이미지

switch - flowchart


다음 프로그램 "switch.jsp"를 살펴보자.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
int ranking = 2;

out.println(ranking);
out.println("등 상품은 ");

switch (ranking) {
    case 1 : out.println("컴퓨터");
    case 2 : out.println("모니터");
    case 3 : out.println("프린터");
}
%>
입니다.
</body>
</html>


사용자 삽입 이미지

switch.jsp 실행결과


위 프로그램 "switch.jsp"에서 순위를 위한 변수 "ranking"에 초기값으로 2가 저장되어있다. 따라서 switch 문의 수식(이 프로그램에서는 변수)의 결과가 2 이므로 case 문의 값과 일치하는 부분, 즉

case 2 : out.println("모니터");

이하의 코드를 실행하게 되므로

out.println("모니터");
out.println("프린터");

두 개의 실행코드를 실행하고 switch 문을 빠져 나온다. 따라서 결과 역시

"2등 상품은 모니터 프린터 입니다."

를 출력한다. 위 프로그램에서 보면 switch 문 형식에서 보이는 "default : " 부분이 안보이는데 이 부분은 switch 문 수식의 결과와 일치하는 case 부분이 없을 때 실행할 코드는 기술해 주는 부분으로 실행할 코드가 없으면 생략 가능하다. 위 프로그램의 결과로써 1등 상품은 "컴퓨터 모니터 프린터"가 될 것이고, 2등 상품은 "모니터 프린터"가 , 3등 상품은 "프린터"가 될 것이다.

만약 1등 상품으로는 "컴퓨터"를, 2등 상품으로는 "모니터"를, 3등 상품으로는 "프린터"를 각 등수에 따라 하나의 상품만을 받도록 하려면 어느 부분을 고쳐야 할까? 이것은 switch 문 내부에 "break" 문을 삽입함으로써 가능해 진다. break 문은 switch 문 내부의 실행을 종료하고 그 밖으로 빠져 나가도록 프로그램을 제어한다.

다음은 switch 문에서 break를 사용한 경우의 형식과 순서도이다.


break 구조

형식

switch ( 수식 ) {
    case  값1 : 실행코드 1 ;
                     break;
    case  값2 : 실행코드 2 ;
                     break;
    case  값3 : 실행코드 3 ;
                     break;
    default     : 실행코드 4 ;
}

사용자 삽입 이미지

break - flowchart


다음 프로그램 "break.jsp"를 살펴보자.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
int ranking = 2;

out.println(ranking);
out.println("등 상품은 ");

switch (ranking) {
    case 1 : out.println("컴퓨터");
             break;
    case 2 : out.println("모니터");
             break;
    case 3 : out.println("프린터");
             break;
}
%>
입니다.
</body>
</html>


사용자 삽입 이미지

break.jsp 실행결과


위 프로그램에서는 int ranking = 2에 의해

case 2 : out.println("모니터");

부분부터 실행하게 되는데 다음 실행할 코드가

break;

이므로 switch 문을 빠져나간다. 따라서 출력 결과는

"2등 상품은 모니터 입니다."

가 된다.

'프로그래밍 > JSP' 카테고리의 다른 글

while, do 문  (0) 2009.03.09
for 문  (0) 2009.03.09
if 문  (0) 2009.03.05
설명문  (0) 2009.03.04
연산자  (0) 2009.03.03
AND

if 문

프로그래밍/JSP 2009. 3. 5. 17:08
if 문은 주어진 조건식의 참, 거짓 여부에 따라 실행되는 코드가 달라질 경우에 사용하는 제어문이다. if 문은 크게 세 가지 구조로 분류할 수 있다.

if 구조

if 구조는 조건식의 결과가 참인 경우에만 실행할 코드가 있을 경우 사용하며 형식과 순서도는 다음과 같다.

형식

if ( 조건식 ) {
    실행코드 1
}

사용자 삽입 이미지

if - flowchart

다음 프로그램 "if.jsp"과 결과를 살펴보자.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
int age = 17;

if ( age < 20 ) {
    out.println("미성년은 10%할인 혜택이 있습니다.");
}
%>
</body>
</html>

사용자 삽입 이미지

if.jsp 실행결과


위 프로그램은 int 형 변수 age에 초기값으로 17이 저장돼 있으므로 if 문의 조건식 "age < 20"의 결과는 "17 < 20"으로 참이 되므로 중괄호({ ~ }) 사이의 코드인

out.println("미성년은 10%할인 혜택이 있습니다.");

를 실행한다. 여기서 "out.println"은 java의 출력문으로 JSP에서 출력을 위해 "<%= ~ %>"과 함께 자주 사용되는 출력문 중에 하나다. 만약 변수 age에 20이상의 값이 저장됐다면 조건식이 거짓이 되어 실행결과는 아무 것도 출력되지 않는다.

if ~ else 구조

if ~ else 구조는 조건식의 결과가 참, 거짓에 따라 실행할 코드가 다른 경우 사용하며 형식과 순서도는 다음과 같다.

형식

if ( 조건식 ) {
    실행코드 1
}
else {
    실행코드 2
}

사용자 삽입 이미지

if~else - flowchart


다음 프로그램 "else.jsp"를 살펴보자.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
int age = 20;

if ( age < 20 ) {
    out.println("당신은 미성년 입니다.");
}
else {
    out.println("당신은 성인 입니다.");
}

%>
</body>
</html>

사용자 삽입 이미지

else.jsp 실행결과



위 프로그램에서 변수 age에 초기값 20이 저장되어 있고 이로인해 조건식 "age < 20"은 "20 < 20"으로 거짓이므로 esle 부분의 중괄호에 위치한 코드

out.println("당신은 성인 입니다.");

를 실행한다. 따라서 "당신은 성인 입니다"라는 메세지를 출력한다. 만약 age의 값이 18과 같은, 20보다 작은
수가 저장됐다면 조건식 "age < 20"가 "18 < 20"으로 참이 되므로

out.println("당신은 미성년 입니다.");

부분을 실행하여 "당신은 미성년 입니다."라는 메세지를 출력하게 된다.


if ~ else if ~ else 구조

if ~ else if ~ else 구조는 조건이 여러개인 경우 사용되며 형식과 순서도는 다음과 같다.

형식

if ( 조건식 1 ) {
    실행코드 1
}
else if ( 조건식 2 ) {
    실행코드 2
}
else if ( 조건식 3 ) {
    실행코드 3
}
else {
    실행코드 4
}

사용자 삽입 이미지

if~elseif~else - flowchart


else if 문을 이용 "수", "우", "미", "양", "가"를 출력하는 프로그램 "elseif.jsp"를 살펴보자.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
int score = 87;

if ( score >= 90 ) {
    out.println("수");
}
else if ( score >= 80 ) {
    out.println("우");
}

else if ( score >= 70 ) {
    out.println("미");
}
else if ( score >= 60 ) {
    out.println("양");
}
else {
    out.println("가");
}
%>
</body>
</html>

사용자 삽입 이미지

elseif.jsp 실행결과


위 프로그램에서 변수 "score"에 초기값으로 87(점)이 저장되어 있는데, 첫 번째 조건식 "score >= 90"은 "87 >= 90"이 되어 거짓이 되므로 다음 조건식 "score >= 80"을 비교하게 된다. 이 조건식은 "87 >= 80"이 되어 참이 되므로

out.println("우");

을 실행 "우"를 출력한 후 프로그램을 종료한다. 만약 변수 "score"에 50(점)이 저장되어 있다면 모든 위 프로그램의 모든 조건식이 거짓이 되어 마지막 else 부분의 코드를 실행 "가"를 출력할 것이다.

'프로그래밍 > JSP' 카테고리의 다른 글

for 문  (0) 2009.03.09
switch 문  (1) 2009.03.09
설명문  (0) 2009.03.04
연산자  (0) 2009.03.03
변수, 상수, 자료형  (0) 2009.03.03
AND