在java中打印横向三角形 [英] Printing a sideways triangle in java
本文介绍了在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屋!
查看全文