日期:2014-05-20  浏览次数:20634 次

Java 镂空菱形的输出
如果只用循环能实现吗?
public class LouKong
{
public static void main (String []args)
{
 int lay=2;
for (int i=1;i<=lay;i++)
 {
 for (int k=1;k<=lay-i;k++)
 {
  System.out.printf(" ");
 }
 System.out.printf("*");
  System.out.println();
}
System.out.printf("*");
//这里咋样才不会换行,有那个控制字符能做到
?如果方法、思路不对,请各位指教!
  for (int p=1;p<lay-p;p++)
 {
  System.out.printf(" ");
  System.out.printf("*");
  }
 
 
  
 }

------解决方案--------------------
Java code
public class LouKong {
    public static void main(String[] args) {
        int i, j, k;
        // i 的值,-3,-2,-1,0,1,2,3
        for (i = -3, j = 1; i <= 3; j++) {
            // 对i取绝对值,并传至给k
            if (i < 0)
                k = i * (-1);
            else
                k = i;
            // 如果满足条件,输出*,且跳出本次循环。
            if (j <= k || (j > 7 - k && j != 8)) {
                System.out.print(" ");
                continue;
            }
            // 如果满足条件输出a
            if (j > k && j <= 7 - k) {
                if ((j == k+1) || (j == 7-k)) {
                    System.out.print("*");
                } else {
                    System.out.print(" ");
                }
            }
            // 如果j=8则i自加1,并将0重新赋值为0!
            // (只有j在[1,7]范围内才输出)
            if (j == 8) {
                i++;
                j = 0;
                System.out.println();
            }
        }
    }
}