思路:
设座标原点为 0,0
设菱长为 len
则纵轴横座标也是 len
则最大横座标及总行数都是len*2
那第i行的第一个实心点 x的横座标是 len-i的绝对值(len指纵轴横座标)
则第i行的第二个实心点 y 的横座标是 len+(len-x) (len同上,x指x点的横座标)
循环判断第i行的每一个点是不是 x 或 y点,如果是,则输出 * ,否则输出汉字空格。
注意 len 为两个 * 之间的距离,所以三个* 是两个长度- public class Test {
- public static void main(String[] args) {
- int len=2; //菱长
- String outstr=" "; //输出
- int i,j,x,y;
- for(i=0;i <=len*2;i++) {
- for(j=0;j <=len*2;j++) {
- x=len-i;
- x=x <0?-1*x:x;
- y=len+(len-x);
- outstr+=(j==x||j==y? "*": " ");
- }
- outstr+= "\n ";
- }
- System.out.println(outstr);
- }
- }
复制代码 |