Java 如何使用tapestry组件t:loop绘制钻石

Java 如何使用tapestry组件t:loop绘制钻石,java,algorithm,math,tapestry,Java,Algorithm,Math,Tapestry,为了做挂毯的家庭作业,我必须在桌子上展示一个字符串数组中的钻石。以下是我目前掌握的情况: 代码索引.java public class Index { @Property private Integer number; @Property private String [] table; public Index() { number = 9; int

为了做挂毯的家庭作业,我必须在桌子上展示一个字符串数组中的钻石。以下是我目前掌握的情况:

代码索引.java

  public class Index
    {
        @Property
        private Integer number;

        @Property
        private String [] table; 

        public Index() {
            number = 9;
            int temp = 0;

            String tmp = "-";
            table = new String[number * number];

            if(singleCell == null)
                singleCell="";

            for (int i = 0; i <  number; i++) {
                for (int j = 0; j <  number; j++) {
                    table[temp] = tmp;
                    temp++;
                }               
            }
        }

        @OnEvent(component="diamond")
        Object onDiamondLink() {
            String swapValue = "*";

            int  sum = number / 2 ;

            int x1 = number-1;

            int sumY = number / 2;

            int y1 = number+1;

            int temp = x1 + sumY;

            for (int i = 0; i < table.length; i++) {
                table[i] = "-";
            }

            for (int i = 0; i < table.length; i++) {
                if( i == sum) {
                    table[i] = swapValue;
                    sum = sum + x1;
                }
                if ( i == sumY ) {
                    table[i] = swapValue;
                    sumY = sumY + y1;
                } 
            }   

            System.out.println("link diamond is activate");
            return null;
        }
 public boolean isStartRow(){
         return (myIndex%9 ==0);
     }

     public boolean isEndRow(){
         return (myIndex%9 == 8);
     }

     public String getStartTR(){
         return "<tr >";
     }

     public String getEndTR(){
         return "</tr>";
    }
我需要的正确输出是:

-   -   -   -   *   -   -   -   -
-   -   -   *   -   *   -   -   -
-   -   *   -   -   -   *   -   -
-   *   -   -   -   -   -   *   -
*   -   -   -   -   -   -   -   *
-   *   -   -   -   -   -   *   -
-   -   *   -   -   -   *   -   -
-   -   -   *   -   *   -   -   -
-   -   -   -   *   -   -   -   -

任何想法都会大有帮助。

这将打印出所需的输出:

public class Diamond
{
  public static void main( String []args)
  {
    for(int i=0;i<9;i++){ 
      for(int j=0;j<9;j++)
        if( (i + j == 4 ) || (i-j == 4)||(i+j == 12) || (j-i == 4))
          System.out.print("*");
        else
          System.out.print("-");
      System.out.println();
    }
  }
}
公共类菱形
{
公共静态void main(字符串[]args)
{

对于(int i=0;i要绘制菱形吗?请尝试以下算法:

public class Diamond {

    @Property
    @Persist
    private String diamond;


    @SetupRender    
    init(){
         int n,i,j,k;

     do {  

      n = (int)(Math.random() * 10 + 3); 

      }while(n % 2 == 0);

      diamond += ""+n+"<br\/>";

      System.out.println();   

     for (i = 1; i <= n; i++){

        for (k = n; k > i; k--)
          diamond += "-";

        for (j =1; j <= i; j++)
             diamond += "*"+"-";


       diamond += "<br\/>";

        }

     for (i = n; i > 0; i--){

        for (k = n; k > i; k--)
          diamond += "-";

        for (j =1; j <= i; j++)
               diamond += "*"+"-";

              diamond += "<br\/>";

        }
}
}
公共类菱形{
@财产
@坚持
私人钻石串;
@设置渲染
init(){
int n,i,j,k;
做{
n=(int)(Math.random()*10+3);
}而(n%2==0);
菱形+=“+n+”;
System.out.println();
对于(i=1;i;k--)
钻石+=“-”;
对于(j=1;j 0;i--){
对于(k=n;k>i;k--)
钻石+=“-”;

对于(j=1;j)你几乎搞定了,你唯一错过的是RowCount-ColCount==number/2部分,请参考下面我的答案。你应该清楚。我对这两个答案相当失望。不是因为内容,而是因为原则。问题清楚地说“这是我的家庭作业”你们只是在没有任何解释的情况下给出了代码。人们不会通过复制/粘贴代码来学习。@Mannimarco我做了一个更新,他可以尝试使用outputraw组件来尝试显示为html。因此,可以在google或tapestry中找到信息。或者请重构我的代码。我的错误在哪里?我不明白你的意思??只是好奇,你在哪个学校使用Tapestry?嗨,谢谢你的帮助。我必须在tml中使用循环和表格组件…而不是outputdraw组件
public class Diamond
{
  public static void main( String []args)
  {
    for(int i=0;i<9;i++){ 
      for(int j=0;j<9;j++)
        if( (i + j == 4 ) || (i-j == 4)||(i+j == 12) || (j-i == 4))
          System.out.print("*");
        else
          System.out.print("-");
      System.out.println();
    }
  }
}
public class Diamond {

    @Property
    @Persist
    private String diamond;


    @SetupRender    
    init(){
         int n,i,j,k;

     do {  

      n = (int)(Math.random() * 10 + 3); 

      }while(n % 2 == 0);

      diamond += ""+n+"<br\/>";

      System.out.println();   

     for (i = 1; i <= n; i++){

        for (k = n; k > i; k--)
          diamond += "-";

        for (j =1; j <= i; j++)
             diamond += "*"+"-";


       diamond += "<br\/>";

        }

     for (i = n; i > 0; i--){

        for (k = n; k > i; k--)
          diamond += "-";

        for (j =1; j <= i; j++)
               diamond += "*"+"-";

              diamond += "<br\/>";

        }
}
}
<t:outputraw value="${diamond}"/>