Notice
Recent Posts
Recent Comments
Link
MSM8994의 화룡점정 블로그
[JSP] 1부터 N까지의 자연수, 홀수, 짝수 합 구하기 본문
오늘은 1부터 N까지의 자연수, 홀수, 짝수 합을 구하는 방법을 알려드리겠습니다.
매개변수 전달방법
먼저 매개변수를 전달하려면 페이지 주소 뒤에 ?num=10 이렇게 전달하시면 GET 방식입니다.
여기서는 괜찮으니 이렇게 불러오도록 하죠.
(파일이름).jsp?num=10
이렇게 주소칸에 적으시면 됩니다.
본격적인 코딩 시작
혹시나 모르니 UTF-8 인코딩으로 매개변수를 읽으시구요.
request.setCharacterEncoding("UTF-8");
num매개변수를 쓰겠다고 했으니 이것을 strNum으로 읽어온 다음 parseInt(strNum)한 수를 num에 기억합니다.
단, 못 읽어왔을때 진행해서는 안되므로 초기값은 -1로 설정해둡니다.
String strNum = request.getParameter("num"); // num이라는 매개변수를 strNum으로 가져옴 int num = -1;//누적시킬 값의 목적값을 -1로 초기화. if(strNum != null){ // null이 아닌 문자열로써 parseInt가 가능한 경우 try{ strNum = strNum.trim(); // 앞뒤 공백 제거 num = Integer.parseInt(strNum); // strNum 문자열을 정수로 변환 }catch (NumberFormatException nfe){ //그래도 수가 아닌 문자열이 들어올 수 있으니 예외는 잡아주자. nfe.printStackTrace(); } }
반복하는 코드는 한 번만 설명할게요. 홀수는 1부터 2씩 더한 수, 짝수는 2부터 2씩 더한 수로 반복을 진행하면 됩니다.
%><h2>1부터 <%=num%>까지 자연수 합</h2><% int sum = 0;// 누계 초기화 boolean sumPlus = false;// + 표시를 앞에 붙일지 말지 결정할 플래그 for(int i = 1; i <= num; i++){ // 더할값은 1부터 num까지 1씩 증가 if(sumPlus){ // 플래그가 올려져 있으면 +를 붙인다 %>+<% }else{ // 플래그가 내려가 플래그를 올린다. sumPlus = true; } // i 값 표시 %><%=i %><% //sum에 i 누적 sum += i; } // sum 값(누계) 표시 %>=<%=sum%><br /><%
sumPlus는 수 앞에 + 기호를 붙일지 말지를 결정하는 플래그입니다. 이 값이 내려가있을 땐 플래그를 올리기만 하고, 올려져있으면 + 기호를 표시하도록 합니다. 처음에 왔을 땐 내려진 플래그를 올리기만 하므로 맨 처음에 +는 표시되지 않습니다.
i 값은 N(num)까지 계속해서 증가하면서 표시되고, 또한 누계(sum)와 더할 수입니다.
sum은 지금까지 더한 수들이 누적될 합계 변수입니다.
JSP 하시는 분들은 <% /*자바코드*/ %> <%=변수 또는 반환값이 있는 함수() %> <%! /*멤버변수 또는 메소드() 선언 */ %> 이 무엇인지 알고 계실겁니다. 따로 설명은 하지 않겠습니다.
if를 통해 0보다 큰 경우에나 계산을 하도록 했으므로 아닌 경우엔 입력된 매개변수(num 매개변수가 strNum으로 가져왔으므로)가 잘못되었다고 전해줍니다.
i 값은 N(num)까지 계속해서 증가하면서 표시되고, 또한 누계(sum)와 더할 수입니다.
sum은 지금까지 더한 수들이 누적될 합계 변수입니다.
JSP 하시는 분들은 <% /*자바코드*/ %> <%=변수 또는 반환값이 있는 함수() %> <%! /*멤버변수 또는 메소드() 선언 */ %> 이 무엇인지 알고 계실겁니다. 따로 설명은 하지 않겠습니다.
if를 통해 0보다 큰 경우에나 계산을 하도록 했으므로 아닌 경우엔 입력된 매개변수(num 매개변수가 strNum으로 가져왔으므로)가 잘못되었다고 전해줍니다.
else{ %>잘못된 수가 입력되었습니다: <%=strNum %> <% }
수고하셨습니다. 이제 실행해보시면 될 것 같네요.
결과
num으로 10 전달하면 나오는 결과
전체 소스코드
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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=UTF-8"> <title>1부터 N까지 자연수 홀수 짝수 합</title> </head> <body> <% request.setCharacterEncoding("UTF-8"); // utf-8 매개변수 인코딩 String strNum = request.getParameter("num"); // num이라는 매개변수를 strNum으로 가져옴 int num = -1;//누적시킬 값의 목적값을 -1로 초기화. if(strNum != null){ // null이 아닌 문자열로써 parseInt가 가능한 경우 try{ strNum = strNum.trim(); // 앞뒤 공백 제거 num = Integer.parseInt(strNum); // strNum 문자열을 정수로 변환 }catch (NumberFormatException nfe){ nfe.printStackTrace(); } } if(num > 0){ %><h2>1부터 <%=num%>까지 자연수 합</h2><% int sum = 0;// 누계 초기화 boolean sumPlus = false;// + 표시를 앞에 붙일지 말지 결정할 플래그 for(int i = 1; i <= num; i++){ // 더할값은 1부터 num까지 1씩 증가 if(sumPlus){ // 플래그가 올려져 있으면 +를 붙인다 %>+<% }else{ // 플래그가 내려가 플래그를 올린다. sumPlus = true; } // i 값 표시 %><%=i %><% //sum에 i 누적 sum += i; } // sum 값(누계) 표시 %>=<%=sum%><br /><% %><h2>1부터 <%=num%>까지 홀수 합</h2><% int sumOdd = 0; boolean sumOddPlus = false; for(int i = 1; i <= num; i+=2){ // 더할 값은 1부터 num까지 2씩 증가 if(sumOddPlus){ %>+<% }else{ sumOddPlus = true; } %><%=i %><% sumOdd += i; } %>=<%=sumOdd%><br /><% %><h2>1부터 <%=num%>까지 짝수 합</h2><% int sumEven = 0; boolean sumEvenPlus = false; for(int i = 2; i <= num; i+=2){ // 더할 값은 2부터 num까지 2씩 증가 if(sumEvenPlus){ %>+<% }else{ sumEvenPlus = true; } %><%=i %><% sumEven += i; } %>=<%=sumEven%><br /><% }else{ %>잘못된 수가 입력되었습니다: <%=strNum %> <% } %> </body> </html>
'코딩' 카테고리의 다른 글
[JAVA] 윤년 구하는 코드 짧게 작성하기 (0) | 2018.08.01 |
---|---|
[JAVA] 정보처리 산업/기사 알고리즘 - 화폐매수 계산 (0) | 2018.07.31 |
[JS] Math.random() 을 활용한 중복이 없는 임의의 수 6개짜리 배열에 담기 (3) | 2018.07.27 |
[JS] 구구단 퀴즈 (Form 사용) (0) | 2018.07.26 |
[JS] 사칙연산 계산 (Form, 함수 사용) (0) | 2018.07.25 |
Comments