문제
[JSP] 두 수 입력 연산자 선택 후 값 출력(계산기)
윤고랭이
2021. 6. 16. 18:53
1. 두수 입력 연산자 선택 후 값 출력(게산기)
work_.calc.jsp
<body>
<h3>계산하자!!!</h3>
<!-- 5 * 10의 결과는 50입니다.
단, 숫자가 아니거나, 연산자가 선택되지 않았다면 메시지를 출력해 주세요. -->
<form action="work_result.jsp" method="get">
<input type="text" name="num1" size="5" placeholder="첫번째 숫자입력">
<select name="oper" >
<option value="">연산자 선택</option>
<option value="+">+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>
<input type="text" name="num2" size="5" placeholder="두번째 숫자입력">
<button type="submit">계산</button>
</form>
</body>
</html>
work_result.jsp
<%
//Integer.parseInt
//객체가 null이면 메소드는 쓸 수 없다.
String n1 = request.getParameter("num1");
boolean res = isDigit(n1);
if(res == false) {
out.println("첫번째 숫자가 입력되지 않았습니다.");
return;
}
String n2 = request.getParameter("num2");
res = isDigit(n2);
if(res == false) {
out.println("두번째 숫자가 입력되지 않았습니다.");
return;
}
int nu1 = Integer.parseInt(n1);
int nu2 = Integer.parseInt(n2);
String oper = request.getParameter("oper");
int r = 0;
//java7 이후부터 switch문에 문자열을 쓸 수 있게 되었다.
switch(oper) {
case"+" : r = nu1 + nu2; break;
case"-" : r = nu1 - nu2; break;
case"*" : r = nu1 * nu2; break;
case"/" : r = nu1 / nu2; break;
}
/* if(oper.equals("+")) {
r = nu1 + nu2;
}else if("-".equals(oper) ) {
r = nu1 + nu2;
} */
%>
<%=nu1 %> <%=oper %> <%=nu2 %>의 결과는 <%=r %>
<%!
public boolean isDigit(String str) {
if(str == null){
return true;
}
char chArr [] = str.toCharArray();
for(char x : chArr) { //for(대입받을 변수정의 : 배열명)
if(x < '0' || x > 57) {
//0 -> 숫자 8 57 -> 문자
}
}
return true;
}
%>
</body>
</html>