③ JSP프로젝트-10 m*n 사용자한테 숫자를 받아와서 행렬의곱 만들기 == M * n Get the number from the user and output Matrix multiplication
사용자한테 m*n행렬과 a*b행렬을 받아와 현 페이지에 출력 시켜주는 프로그램입니다.
숫자 4자리를 받아오고 submit 버튼을 누르면 칸이 비었는지 확인, 숫자가 아닌지 확인, n과 a가 같은지 확인을 한 후에 곱셈을 출력해주는 프로그램입니다.
A행렬과 B행렬은 숫자 순서대로 +시켜 주었지만 필요하신다면 사용자한테 행렬 안의 값도 받아오게 만들면 좋을것 같습니다.
소스입니다.
first.jsp |
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!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=EUC-KR">
<title>행렬의 곱구하기</title>
</head>
<body>
<form name="inputNumber" method="post" action="first.jsp">
<table bordr=1 width=500 cellpadding=5>
<tr><td><input type="text" name="inpNum1">*<input type="text" name="inpNum2">행렬</td></tr>
<tr><td><input type="text" name="inpNum3">*<input type="text" name="inpNum4">행렬</td></tr>
<tr><td>m*n행렬과 i*j행렬을 곱하려면 n과 i가 같아야 합니다.</td></tr>
<tr><td><input type="submit" value="두행렬의 곱 구하기"></td></tr>
</table>
<%
int cnt=1;
try{
if(request.getParameter("inpNum1") != "" && request.getParameter("inpNum1") != null &&
request.getParameter("inpNum2") != "" && request.getParameter("inpNum2") != null &&
request.getParameter("inpNum3") != "" && request.getParameter("inpNum3") != null &&
request.getParameter("inpNum4") != "" && request.getParameter("inpNum4") != null) {
int a = Integer.parseInt(request.getParameter("inpNum1"));
int b = Integer.parseInt(request.getParameter("inpNum2"));
int c = Integer.parseInt(request.getParameter("inpNum3"));
int d = Integer.parseInt(request.getParameter("inpNum4"));
if(b != c){
out.print("n과 i가 같지 않습니다.");
}
else{
out.print(a +"*"+a+"정사각 행렬은?<br>");
int[][] hangA = new int[a][b];
int[][] hangB = new int[c][d];
int[][] hangC = new int[a][d];
out.print("A행렬은?<br>");
for ( int i = 0 ; i < a ; i++ ) {
out.print("<br>");
for ( int j = 0 ; j < a ; j++ ) {
hangA[i][j]=cnt;
out.print(hangA[i][j]+" ");
cnt++;
}
}
out.print("<br>");
out.print("B행렬은?<br/>");
for ( int i = 0 ; i < a ; i++ ) {
out.print("<br>");
for ( int j = 0 ; j < a ; j++ ) {
hangB[i][j]=cnt;
out.print(hangB[i][j]+" ");
cnt++;
}
}
for ( int i = 0 ; i < a ; i++ ) {
for ( int j = 0 ; j < d ; j++ ) {
for ( int k = 0 ; k < b ; k++ ) {
hangC[i][j] += hangA[i][k]*hangB[k][j];
}
}
}
out.print("<br>");
out.print("C행렬은?<br/>");
for ( int i = 0 ; i < a ; i++ ) {
out.print("<br>");
for ( int j = 0 ; j < a ; j++ ) {
out.print(hangC[i][j]+" ");
}
}
}
}else{
out.print("숫자를 입력하세요");
}
}catch(Exception e){
out.print("숫자를 입력하지 않았습니다 다시입력하세요");
}
%>
</body>
</html>