在java中打印横向三角形 [英] Printing a sideways triangle in java

查看:230
本文介绍了在java中打印横向三角形的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在java中打印一个横向三角形。如果用户输入5,则输出应为:

I'm trying to print a sideways triangle in java. If the user enters 5, the output should be:

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

如果用户输入6,输出应为:

If the user enters 6, the output should be:

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

我已经知道了用户输入5,3或1时的情况,但我的代码似乎仅适用于这三种情况。我想知道是否有人可以帮助我让我的代码工作更多的情况。
这是:

I've gotten it to work for the case when the user enters 5, 3, or 1 but my code seems to work for those three cases only. I was wondering if anyone could help me get my code working for more cases. Here it is:

public void printArrow( int n )
{ int asterisks = 1;
   for ( int i = 0; i <= n/2; i++ )
   {
       for ( int j = i; j < asterisks; j++ )
       {

         System.out.print( "*" );

        }
        asterisks += 3;
        System.out.println();
    }


    asterisks = asterisks / 2 - 2;
    for ( int i = 0;  i < n/2; i++ )
    {
        for ( int k = i; k < asterisks; k++ )
        {
            System.out.print( "*" );

        }
        if ( i == 1 )
        {
            System.out.print( "*" );
        }

        asterisks -= 2;
        System.out.println();
    }
}


推荐答案

这是使用递归更容易解决这个问题:

It's much easier to solve this using recursion:

static String triangle(int n, String s) {
    return
        n == 0 ? "" :
        n == 1 ? s  :
        s
          + 
            triangle(n - 2, "**" + s)
          +
        s
    ;
}

public static void main(String args[]) {
    System.out.println(triangle(6, "*\n"));
}

三角形的结构不言自明:

The structure of the triangle is self-evident:


  • n == 0 ?没有线!

  • n == 1 ?一行!

  • 否则?两行夹着 n - 2 行! (更长!)

  • n == 0? No line!
  • n == 1? One line!
  • Otherwise? Two lines sandwiching n - 2 lines! (which are longer!)

这篇关于在java中打印横向三角形的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆