基本思路
- 双层for循环,外层控制行,内层决定列
- 只需输出左侧空白数+当前行星数,可得内层列宽限制条件。
- 考虑到菱形对称性, 用数学绝对值函数依赖行号计算单侧空白点位数。
- 让列宽动态依赖于行数变化,右侧空白不输出
代码
好的代码会说话,码上见!!!
public class Diamond {
public static void printStar(int size)
{
// 确保为大小为奇数
if(size % 2 == 0)
{
size++;
}
// 双层循环,外部控制行,内控制列
for(int i=0; i< size; i++)
{
// 当前行单边空白数
int blank = Math.abs(size/2 - i);
for(int j=0; j < size - blank; j++)
{
if(j>=blank) {
System.out.print("*");
}else {
System.out.print("-");
}
}
// 换行
System.out.println();
}
}
public static void main(String[] args) {
// 打印
printStar(8);
}
}
效果如下
----*
---***
--*****
-*******
*********
-*******
--*****
---***
----*