java 输出菱形

来源:百度知道 编辑:UC知道 时间:2024/05/27 12:40:13
public class LX {
public static void main(String[] args) {
int kg, h, l, kk, kk1;

for (h = -3; h <= 3; h++) {
kk1 = -1;// for (kg = 0; kg <1; kg++){
for (kg = 0; kg < Math.abs(h); kg++)
System.out.print(kg);

for (l = 0; l < 7 - Math.abs(h) - kg; kg++)
{System.out.print("*"); }

for (kk = Math.abs(h )-1; kk1<0; kk--) {

kk1=(-kk);
if (kk!=-1)
System.out.print(kk);
else
System.out.print("");
}

System.out.print("\n");
}
}

}
输出结果如下:
012*210
01***10
0*****0
*******
0*****0
01***10
012*210
右面输出210到210这段代码我写的有点复杂,请问还有什么节省代码的写法,能同时省略if功能和kk1=-1?如果大家写法有多种,我另开贴给分。

你的代码看起来很费力,建议变量名有点规律

说一下思路:
7*7的矩阵,行号-3到3,列号也是-3到3
如果3减去列号的绝对值小于行号的绝对值,也就是
3-|y| < |x|
那么打印这个差值,也就是3-|y|
否则打印一个*号

for (row = -3; row <= 3; row++)
{
for (line = -3; line <= 3; line++)
{
if( 3 - math.abs(line) < math.abs(row) )
System.out.print(3 - math.abs(line));
eles
System.out.print(math.abs( math.abs(row) - math.abs(line)));
}
System.out.print("\n")
}

这是代码最简的思路,如果不用if语句的话,需要用到更多的for循环
对于每一行,做如下三个循环
1.从0到 行号的绝对值-1,打印数值
2.打印 7 - 2倍行号的绝对值个*号
3.从行号的绝对值-1到0,打印数值

for (row = -3; row <= 3; row++)
{
for (line = 0; line < math.abs(row); line++)
{
System.out.print(line);
}
for (line = 7 - 2 * math.abs(row);line > 0; line--)
{
System.out.print("*");
}
for (line = math.abs(row) - 1; line >= 0 ; line--)
{