새소식

JAVA 교육/Jsp

2019/08/23 계산 연습

  • -

[전 수업] 성적을 이용해서 데이터를 입력하는 화면과 데이터를 받으면 출력되는 화면을 구현해 보았다

[본 수업] 계산연습 화면을 만들어 보자


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>

 

 

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.