在java中打印横向三角形
我想用java打印一个横向三角形。如果用户输入5,则输出应为:在java中打印横向三角形,java,Java,我想用java打印一个横向三角形。如果用户输入5,则输出应为: * *** ***** *** * * *** ***** ***** *** * 如果用户输入6,则输出应为: * *** ***** *** * * *** ***** *****
*
***
*****
***
*
*
***
*****
*****
***
*
如果用户输入6,则输出应为:
*
***
*****
***
*
*
***
*****
*****
***
*
我已经让它在用户输入5、3或1时工作,但我的代码似乎只适用于这三种情况。我想知道是否有人能帮我让我的代码在更多的情况下工作。
这是:
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();
}
}
public void打印箭头(int n)
{int星号=1;
对于(inti=0;i好的,我咬
所以我们的目标是打印出一个三角形的恒星。我们需要一个某种循环,可能还有另一个内部循环。我们知道它是对称的,因为它是一个三角形
因此,我将从打印前半部分开始:
function triangle( input )
i <- 1
while i < input do
for j from 1 to i do
print "*"
end for
i <- i + 2
print "\n"
end while
函数三角形(输入)
我好的,我会咬的
所以我们的目标是打印出一个三角形的恒星。我们需要一个某种循环,可能还有另一个内部循环。我们知道它是对称的,因为它是一个三角形
因此,我将从打印前半部分开始:
function triangle( input )
i <- 1
while i < input do
for j from 1 to i do
print "*"
end for
i <- i + 2
print "\n"
end while
函数三角形(输入)
idouble-middle=((双)行)/2;
国际星号=1;
for(int i=1;i中间){
星号-=2;
}
System.out.println();
}
解释:
行
是输入的数字(3、4、5、6、7等)
- 将中间一行设为双精度。即,对于奇数,它将为
x.5
- 循环的行数与输入的行数相同
- 在每一行上打印与
星号
变量中星号数量相同的星号
- 在每次迭代中,如果行在中间之前,则将星号数增加2;如果行在中间之后,则将星号数减少2。这意味着如果星号数相等,则不会发生任何事情,即同一行的星号数相同。对于奇数,星号数不能相等
双中间=((双)行)/2;
国际星号=1;
for(int i=1;i中间){
星号-=2;
}
System.out.println();
}
解释:
行
是输入的数字(3、4、5、6、7等)
- 将中间一行设为双精度。即,对于奇数,它将为
x.5
- 循环的行数与输入的行数相同
- 在每一行上打印与
星号
变量中星号数量相同的星号
- 在每次迭代中,如果行在中间之前,则将星号数增加2;如果行在中间之后,则将星号数减少2。这意味着如果星号数相等,则不会发生任何事情,即同一行的星号数相同。对于奇数,星号数不能相等
使用递归更容易解决此问题:
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"));
}
三角形的结构不言而喻:
n==0
?没有行
n==1
?一行
- 否则?两行夹在
n-2行之间!(哪一行更长!)
使用递归更容易解决此问题:
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"));
}
三角形的结构不言而喻:
n==0
?没有行
n==1
?一行
- 否则?两行夹在
n-2行之间!(哪一行更长!)
事实上,这是我昨天参加的一个测试中的一个问题,我无法完全理解。现在我很好奇。你通过调试器跟踪了它吗?事实上,这是我昨天参加的一个测试中的一个问题,我无法完全理解。现在我很好奇。你通过调试器跟踪了它吗?谢谢你的回答。我明天会详细查看它。这里很晚了,我明天必须早起。再次感谢!谢谢你的回复。我明天会详细查看。这里很晚了,我明天必须早起。再次感谢!