초급의 끄적거림

[JSP] 성적프로그램 / 배열 / 메소드 / <%! %> 본문

JSP

[JSP] 성적프로그램 / 배열 / 메소드 / <%! %>

codingD 2019. 8. 22. 17:41

[02_성적프로그램]

<h1>성적프로그램</h1>
<%
	String name="장만월";
    int kor=80, eng=85, mat=90;
    int aver=(kor+eng+mat)/3;
    
    //1) 출력
    out.print("이름 : " + name + "<br>");
    out.print("국어 : " + kor + "<br>");
    out.print("영어 : " + eng + "<br>");
    out.print("수학 : " + mat + "<br>");
    out.print("평균 : " + aver + "<br>");
    out.print("<br>");
    
    //2) 표작성출력
    out.print("<hr>");
    out.print("<table border='1'>");	
	out.println("<tr>");
	out.println("	<th>이름</th>");
	out.println(" <th>"+name+"</th>");
	out.println("</tr>");
	out.println("<tr>");
	out.println("	<th>국어</th>");
	out.println(" <th>"+kor+"</th>");
	out.println("</tr>");
	out.println("<tr>");
	out.println("	<th>영어</th>");
	out.println(" <th>"+eng+"</th>");
	out.println("</tr>");
	out.println("<tr>");
	out.println("	<th>수학</th>");
	out.println(" <th>"+mat+"</th>");
	out.println("</tr>");
	out.println("<tr>");
	out.println("	<th>평균</th>");
	out.println(" <th>"+aver+"</th>");
	out.println("</tr>");
	out.println("</table>");

	//3) 표현식(Expression) 이용해서 출력 : out.print()의 단축키
%>
	<hr>
    <table boreder="1">
    <tr>
      <th>이름</th>
      <td><%out.print(name);%></td>
    </tr>
    <tr>
      <th>국어</th>
      <td><%=kor%></td>
    </tr>
    <tr>
      <th>영어</th>
      <td><%=eng%></td>
    </tr>
    <tr>
      <th>수학</th>
      <td><%=mat%></td>
    </tr>
    <tr bgcolor='#99ccff'>
      <th>평균</th>
      <td><%=aver%></td>
    </tr>
    </table>

 

3가지 방법으로 수행

 

 

[03_배열]

<h1>성적프로그램(배열)</h1>
<%
	String[] name={"장만월", "구찬성", "고청명", "마고신", "산체스"};
 	int[] kor       ={100, 85, 65, 30, 70};
 	int[] eng		 ={100, 80, 45, 40, 80};
 	int[] mat		 ={95, 90, 55, 60, 20};
 	int[] aver 	 =new int [5];
 	int[] rank 	 ={1, 1, 1, 1, 1};
 	int size=name.length;
    
    //1) 평균을 구하시오
    for(int idx=0;idx<size; idx++){
     aver[idx]=(kor[idx]+eng[idx]+mat[idx])/3
    }//for end
    
    //2) 등수를 구하시오 (평균을 기준으로)
    for{int a=0; a<size; a++){
      for{int b=0; b<size; b++){
        if(aver[a]<aver[b]){
          rank[a]=rank[a]+1;
        }//if end
      }      
    }//for end
    
    //출력하기
    for(int idx=0;idx<size; idx++){
      out.print(name[idx]+"평균 : "+ aver[idx] +"점, "+ rank[idx]+"등"+"<br>");
    }//for end
%>

	<hr>
    <!-- 테이블로 출력하기 -->
    <table border='1'>
 		<tr>
 		  <th>이름</th>
 		  <th>국어</th>
 		  <th>영어</th>
 		  <th>수학</th>
 		  <th>평균</th>
 		  <th>등수</th>
 		  <th>결과</th>
 		</tr> 	
<%  /* JSP 부분*/
 	for(int idx=0; idx<size; idx++){  
%>

	<!-- html 공간-->
	<tr>
 	  	<td><%=name[idx]%></td>
 	  	<td><%=kor[idx]%></td>
 	  	<td><%=eng[idx]%></td>
 	  	<td><%=mat[idx]%></td>
 	  	<td><%=aver[idx]%></td>
 	  	<td><%=rank[idx]%></td>
 	  	<td>
 <%
 	if(aver[idx]>=70){
		if(kor[idx]<40 || eng[idx]<40 || mat[idx]<40){
        	out.print("재시험");
        }else{
        	out.print("합격");
        }
	}else{
    	out.print("불합격");
    }
 
 	//별표시
    for(int star=1; star<aver[idx]/10; star++){
    	out.print("*");
    }
    
    //평균 95점 이상이면 장학생 (진하게, 빨간색)
    if(aver[idx]>=95){
		out.print("<span style='color:red; font-weight:bold'>");
 		out.print("장학생");
 		out.print("</span>");
	}
%>
	</td>
  </tr>
<%
}//for end
%>

</table>

 

평균과 등수
평균과 등수의 '페이지 소스보기'
테이블로 출력하기

 

+) 결과값이 잘 안나오거나 에러가 없는데 에러가 나는 경우 (메타데이터를 정리하는 방법)
   1. Project - Clean..
   2. 왼쪽 Project Explorer의 '해당 프로젝트 우클릭' - 'Refreash'
   3. 왼쪽 Project Explorer의 '해당 프로젝트 우클릭' - 'Validate'

 

 

[04_메소드]

 ⊙ <%! %> 를 사용해서 만듦

   - ! 를 넣으면 함수를 만들 수 있는데 많이 사용하지 않음

<h1>JSP 사용자 정의 함수</h1>
최대값 : <%=max(3,5)%> <!-- 5 -->

<hr>
두 수 사이의 차이 : <%=diff(2,6)%> <!-- 4 -->

<%!  //!를 넣으면 함수를 만들 수 있음 (많이 사용 안함)
     //JSP 함수 작성 영역
     
     public int max(int a, int b){
     	return Math.max(a, b);
     }//max() end
     
     public int diff(int a, int b){
      	int c=a-b;
        return (c<0) ? -c : c;
     }// diff() end
%>

Comments