문제

[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>

 

1. 연산자를 미선택 하면 선택하라고 나오지만, 두 숫자를 미 입력 시 나오는건 못했다 ㅠㅠ 추후에 해볼 예정이다.

2. switch문