[전 수업] 성적을 이용해서 데이터를 입력하는 화면과 데이터를 받으면 출력되는 화면을 구현해 보았다
[본 수업] 계산연습 화면을 만들어 보자
1. HTML form 양식을 이용하여 계산 틀을 구현
<%@ page contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>07_calc.jsp</title>
</head>
<body>
<h1>* 계산연습 *</h1>
<form name="calcfrm" method="get" action="07_calcok.jsp">
첫번째 수:<input type="number" name="num1" min="0" max="100" required>
<hr>
연산자:<input type="text" name="op" size="3" required>
<hr>
두번째 수:<input type="number" name="num2" min="0" max="100" required>
<hr>
<input type="submit" value="계산">
<input type="reset" value="취소">
</form>
</body>
</html>
※계산을 누르면 입력한 데이터가 07_calcok.jsp로 넘어간다
2. 받은 데이터 출력하는 화면 구현
double a=Integer.parseInt(request.getParameter("num1"));
String op=request.getParameter("op");
double b=Integer.parseInt(request.getParameter("num2"));
double res1;
if(op=="+"){
res1=a+b;
out.print("a"+op+"b"+"="+res1);
}else if(op=="-"){
res1=a-b;
out.print("a"+op+"b"+"="+res1);
}else if(op=="*"){
res1=a*b;
out.print("a"+op+"b"+"="+res1);
}else if(op=="/"){
res1=a/b;
out.print("a"+op+"b"+"="+res1);
}else if(op=="%"){
res1=a%b;
out.print("a"+op+"b"+"="+res1);
}
※ 처음에는 if() 안에서 op를 '==' 연산 기호로 조건을 걸었더니 출력값에서 아무런 값이 나오지 않았다.
==과 .equals 는 같은 역할을 한다고 해서 == 연산기호를 .equals로 바꿔보았더니 출력이 되었다
'==' 은 주소값을 비교하는 것이고 .equals는 객체의 내용을 비교하기 때문에 계산 연습 코드에서는
.equals 를 사용해 줘야한다
double a=Integer.parseInt(request.getParameter("num1"));
String op=request.getParameter("op");
double b=Integer.parseInt(request.getParameter("num2"));
double res1;
if(op=="+"){
res1=a+b;
out.print("a"+op+"b"+"="+Math.round(res1));
}else if(op=="-"){
res1=a-b;
out.print("a"+op+"b"+"="+Math.round(res1));
}else if(op=="*"){
res1=a*b;
out.print("a"+op+"b"+"="+Math.round(res1));
}else if(op=="/"){
res1=a/b;
out.print("a"+op+"b"+"="+res1);
}else if(op=="%"){
res1=a%b;
out.print("a"+op+"b"+"="+Math.round(res1));
}
'+','-','*','%' 연산기호는 정수만 나와야 하기 때문에 소수점을 자르는 Math.round() 를 사용해 주었다
<%@ page contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>07_calcok.jsp</title>
</head>
<body>
<h1>* 계산연습 *</h1>
<%
int a=Integer.parseInt(request.getParameter("num1"));
String op=request.getParameter("op");
int b=Integer.parseInt(request.getParameter("num2"));
int res1=0;
double res2=0.0;
if(op.equals("+")){
res1=a+b;
out.print("a"+op+"b"+"="+Math.round(res1));
}else if(op.equals("-")){
res1=a-b;
out.print("a"+op+"b"+"="+Math.round(res1));
}else if(op.equals("*")){
res1=a*b;
out.print("a"+op+"b"+"="+Math.round(res1));
}else if(op.equals("/")){
res2=(double)a/b;
out.print("a"+op+"b"+"="+res2);
}else if(op.equals("%")){
res1=a%b;
out.print("a"+op+"b"+"="+Math.round(res1));
}
%>
<table border="1">
<tr>
<td><%=a%></td>
<td><%=op%></td>
<td><%=b%></td>
<td>=</td>
<td><%
if(op.equals("/")){
out.print((double)res2);
}else{
out.print(res1);
}
%></td>
</tr>
</table>
</body>
</html>