如何使用星号打印沙漏?

时间:2015-09-21 18:52:16

标签: java

对于家庭作业,我正在尝试构建一个程序,使用星号和空格在屏幕上打印沙漏形状。我已经编写了下面的程序,但它的输出看起来并不像沙漏。任何人都可以帮助我理解为什么我的程序不能产生预期的输出吗?

public class hourglass {
    public static void main(String[] args) {
        int x = Integer.parseInt(args[0]);
        int k = 2 * x - 1;
        int c = k;

        for (int j = x; j > 0; j--) {
            for (int f = j; f <= k; f++) {
                System.out.print("*");
            }
            for (int o = 1; o <= c; o++) {
                if (k % 2 == 0) System.out.print(" ");
                else System.out.print(" ");
            }
            System.out.print("\n");
        }
    }
}
编辑:我重新编写程序现在它只是打印到无限远以外,我理解我需要采用ax数字然后运行for循环的逻辑,每次我通过它我从-1 X。 有人可以帮我这个吗?我只是想加深对Java的理解。

public class hourglass
{
  public static void main(String[] args)
  { 
    int valueIn = Integer.parseInt(args[0]); 
    int maxVALUE = 2*valueIn ;

    for( int i = 0 ;  (valueIn - 1) > i; i--)
    {for( int j =1 ; j < maxVALUE; i++)
      {

      System.out.print("*");}
  for (int o = 1; o < maxVALUE; o++) {
    if (maxVALUE % 2 == 0) System.out.print(" ");
    else System.out.print(" ");
   }
   System.out.print("\n");




  }
 }
}

编辑2 * 如果有人看到这个,我走了。 在过去的8个小时里,我自己构建了一个代码,现在我陷入了困境,我不知道自己能够如何反转&#34;我的循环使它在另一个方向打印我的代码,我不知道该怎么做,如果有人能给我任何有关如何做到这一点的见解,我会很高兴,我试过做一个if if if if(i == 0)但是从未发生过,如果case == 1,我甚至尝试过这样做;但是循环永远地运行了。 有关如何完成我的程序的任何指示?

public class mathrandom
{
  public static void main ( String [] args) 
  {
    int valueIn = Integer.parseInt(args[0]);


    for ( int i = valueIn;  1  <= i; i--){
      for ( int k = i ; k < 2*valueIn -1; k++)
      {System.out.print(" ");}
      {for ( int j = 1; j <= (i*2)-1; j++)
        {
        System.out.  print("*");


      }

        System.out.println();  
    }

}


  }}

1 个答案:

答案 0 :(得分:0)

如果您没有在代码中思考(以及新手做了什么?),您可以尝试编写散文(-ish)描述程序将如何执行其任务,然后编写匹配的代码。散文。例如,您可以从:

开始
  

给定表示沙漏形状宽度的输入x,将沙漏打印为一系列包含星号和空格的线条。每行上的星号数将从x开始,每行向下倒数两行,直到包含少于两个星号的行,然后每行重新计数两次,直到再次达到x。将在每一行上打印适当数量的前导空格,以使该行的星号相对于其他行的中心(假设空格显示的宽度与星号相同)。

您甚至可以将其作为评论添加到源代码中。实际上,它可以帮助将其分解为几个较小的注释,以便您可以使用与该思想特定对应的代码来遵循每个逻辑思想。如果你这样做,那么它不仅可以帮助你组织你的代码,而且你最终会得到一个记录良好的程序,而不需要额外的努力。

如果你将我的散文与你的节目进行比较,你应该看到相似之处和不同之处。您的程序会执行某种倒计时,在每一步打印零个或多个空格字符,一些星号,然后换行以结束该行。这些基本上是正确的事情,但细节是错误的。事实上,足够的错误和奇怪的错误,我倾向于怀疑该程序比外部资源更加严重,而不是精心构建的 de novo 。我建议你从这里开始注意自己编写程序。事实上,请考虑将main()int x = Integer.parseInt(args[0]);之外的所有内容扔掉。