这个问题是这样,我想用jstl技术在页面上打印用‘★’拼成的三角形如图,使用java在控制台打印的源代码是: 
         public static void main(String[] args) {
// TODO 自动生成方法存根    
    
            for(int i=16;i>=1;i--){
     System.out.print("              ");  // 图形定位
     for(int j=1;j<=i-1;j++){ // 打印左边一半的直角三角形
                 System.out.print("★");    
     }
     System.out.print("  "); // 打印直角三角形的斜边和右边三角形的左腰的间隙
                  for(int k=16;k>=i;k--){ // 打印右边的等腰三角形
            System.out.print("★  ");
                  }
                  System.out.println();
            }
    
}如何使用<c:foreach>在页面上实现?还有foreach属性中 begin end step能用负值吗?请高手指点!

解决方案 »

  1.   

    public static void main(String[] args) {
            // TODO 自动生成方法存根        
            String result="";
            StringBuffer buffer=new StringBuffer(result);
                   for(int i=16;i>=1;i--){
                    buffer.append("              ");  // 图形定位
                for(int j=1;j<=i-1;j++){    // 打印左边一半的直角三角形
                  buffer.append("★");                
                }
                buffer.append("  ");    // 打印直角三角形的斜边和右边三角形的左腰的间隙
                         for(int k=16;k>=i;k--){ // 打印右边的等腰三角形
                          buffer.append("★  ");
                         }
                         buffer.append("\n");
                   }
            System.out.println(buffer.toString());
        }
    action里request.setAttribute("buffer",buffer.toString());
    jstl:<c:out value='${buffer}'/>
      

  2.   

    main方法的代码写在servlet里,写jsp页面上也可以上面的有些毛病,页面输出要把\n换成</br>
      

  3.   

    应该是差不多这样的<%@ page language="java"pageEncoding="utf-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>ForEachTest</title>
      </head>
      <body>
        <c:forEach begin="1" end="16" step="1" var="i">
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <c:forEach begin="1" end="${16-i}">★</c:forEach>
        <c:forEach begin="1" end="${i}">★&nbsp;</c:forEach>
        <br>
        </c:forEach>
      </body>
    </html>
      

  4.   

    额。。我没理解错吧
    另外 step是不能为负的
      

  5.   

    非常感谢4楼的朋友,就按你的方法做的,解决了,呵呵,这让偶明白一个道理:当一个问题按照一种方法解决不了时,一定会有第二种方法解决的。比如说偶一直想用for中i--的方法跟foreach中的step对应,但是行不通,多亏朋友指点,有了第二种方法。2楼的方法也挺专业的,同样谢谢。最后感谢每个给偶回帖的人。