java-沙漏模式输入不适用于偶数

时间:2016-11-22 17:33:30

标签: java

我有这些代码用于打印奇数的沙漏。我需要奇数和偶数才能工作。请帮忙

int nRows = 4;

for(int i=0; i < nRows/2; i++ ) {
    for(int j = nRows - i; j < nRows; j++) {
        System.out.print(" ");
    }
    for(int j = 0; j < nRows - 2*i; j++) {
        System.out.print("*");
    }
    System.out.println();
}


for(int i=0; i < (nRows+1)/2; i++ )
{
    for(int j = 1; j <= nRows/2 - i; j++)
        System.out.print(" ");
    for(int j = 0; j <= i*2; j++)
        System.out.print("*");
    System.out.println();
}
}

我的输出是

****
 **
  *
 ***

,输出应为

****  
 **  
 **    
****   

3 个答案:

答案 0 :(得分:1)

在第二个for循环中进行一些更改并应用相同的绘图逻辑

http://ideone.com/U1xJWv

                //start point to the end of the array
                var file = fileArray.buffer.slice(fileStart, lastBoundary);

                if (!file || 0 === file.byteLength) {
                    _displayError("Pdf introuvable");
                }
                else if (type == "text/html;charset=UTF-8") {
                    _displayError("Erreur de téléchargement du pdf. Veuillez contacter l'administrateur.");
                }
                else {
                    var blob = new Blob([file],
                    {
                        type: type
                    });

答案 1 :(得分:0)

我认为你想要一个类似n=6下面的数字:

******
 ****
  **
  **
 ****
******

这是一个解决它的简单代码:

class Main {
  public static void main(String[] args) {
    int nRows = 6;

    if(nRows%2==0)
    {
      hourGlassEven(nRows/2);
    }
    else
    {
      hourGlassOdd((nRows/2)+1);
    }
  }
  public static void hourGlassOdd(int nRows)
  {
    int i,j,k,l;

    for(i=0;i<nRows;i++)
    {
      for(j=0;j<i;j++)
      {
        System.out.print(" ");
      }
      for(k=0;k<nRows-i;k++)
      {
        System.out.print("*");
      }
      for(l=0;l<nRows-i-1;l++)
      {
        System.out.print("*");
      }
      System.out.println();
    }

  for(i=0;i<nRows-1;i++)
    {
      for(j=0;j<nRows-i-2;j++)
      {
        System.out.print(" ");
      }
      for(k=0;k<i+2;k++)
      {
        System.out.print("*");
      }
      for(l=0;l<i+1;l++)
      {
        System.out.print("*");
      }
      System.out.println();
    }
  }
  public static void hourGlassEven(int nRows)
  {
    int i,j,k,l;

    for(i=0;i<nRows;i++)
    {
      for(j=0;j<i;j++)
      {
        System.out.print(" ");
      }
      for(k=0;k<nRows-i;k++)
      {
        System.out.print("*");
      }
      for(l=0;l<nRows-i;l++)
      {
        System.out.print("*");
      }
      System.out.println();
    }

  for(i=0;i<nRows;i++)
    {
      for(j=0;j<nRows-i-1;j++)
      {
        System.out.print(" ");
      }
      for(k=0;k<i+1;k++)
      {
        System.out.print("*");
      }
      for(l=0;l<i+1;l++)
      {
        System.out.print("*");
      }
      System.out.println();
    }
  }
}

编辑:为偶数添加了你的逻辑!!看看

答案 2 :(得分:0)

无论 size 是偶数还是奇数,此代码都将显示沙漏图案。

对于那些仍在寻找有关沙漏挑战的更简单代码的人。可以作为参考。

public static void hourGlass(int size) {
    // 2 for loops only
    int dimension = (size * 2) - 1, space = 0, stars = size - 1, printed = 0;

    for(int i=0; i<dimension; i++) {
        int actual = space;
        for (int j=dimension; j > 0; j--) {
            if(actual > 0) {
                System.out.print(" ");
                actual--;
            }
            else {
                System.out.print("*");
                if(stars==printed) {
                    actual = space;
                    printed = 0;
                } else {
                    actual = 1;
                    printed++;
                }
            }
        }
        if(i <= size-2) { // will pattern spaces and stars from top to middle
            space++;
            stars--;
        }
        else { // will pattern spaces and stars from middle to top
            space--;
            stars++;
        }
        System.out.println();
    }
}