public class TEXT {
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){
System.out.print("a");
}
//如果j=8则i自加1,并将0重新赋值为0!
//(只有j在[1,7]范围内才输出)
if(j==8){
i++;
j=0;
System.out.println();
}
}
}
}
版权:南通大学 冯瑞

解决方案 »

  1.   

     先生您是想说明什么,我才学JAVA不久,现在正往深处学。
      

  2.   

    public class Test {    public static void main(String[] args) {
            
            final int line = 7, semi = line / 2;
            
            for(int i = 0, k = line * line; i < k; i++) {
                int row = i / line;
                int col = i % line;
                if(col == 0 && i > 0) {
                    System.out.println();
                }
                System.out.print(Math.abs(semi - col) > semi - Math.abs(semi - row) ? '*' : 'a');
            }
        }
    }
      

  3.   

    亚日什么时候跑到J2SE板块来了?J2ME板块问题少了。
    你这头像怎么打出来的?
      

  4.   


    偶尔来J2SE板块学习下。
    用eclipse控制台输出的
      

  5.   

    刚刚看到的一个打印菱形的程序
    比较下哈:  public class Test {     public static void main(String[] args) { 
            
            final int e = 7, s = e / 2; 
            
            for(int i = 0, k = e * e; i < k; i++) { 
                int row = i / e; 
                int col = i % e; 
                if(col == 0 && i > 0) { 
                    System.out.println(); 
                } 
                System.out.print( 
                    Math.abs(s - col) > s - Math.abs(s - row) ? ' ' : '*'); 
            } 
        } 
    }
      

  6.   

    来个强大的:public class Test{
      public static void main(String[] args){
        int w=7;
        for(int i=0;i<w*w+w;i++){
          int l=Math.abs(i/(w+1)-w/2);
          int n=w/2-Math.abs(i%(w+1)-w/2);
          if(i%(w+1)==w) System.out.println();
          else System.out.print(n<l?"* ":"O ");
        }
      }
    }
      

  7.   

    楼主实际是在耍赖,虽然标板只用一个for循环,但实际上使用了两层的循环变量,也就是说利用一个for实现嵌套循环的效果。
    如果这是面试题,那么题目应该是:public class Test{
      private static int w=7;
      public static void main(String[] args){
        for(int i=0;i<w*w+w;i++){
          System.out.print(f(i));
        }
      }
      public static char f(int i){
      }
    }完善以上f函数的实现,以使得程序输出一个菱形!
      

  8.   

    像你那样 我循环都不用 就打出来
    System.out.println("       **");
    System.out.println("      *  *");
    System.out.println("     *    *");
    System.out.println("    *      *");
    System.out.println("     *    *");
    System.out.println("      *  *");
    System.out.println("       **");
      

  9.   

    来个易读性强的吧。
            public static void main(String[] args) {
    int k=3;
    for(int i=-k;i<k;i++){//一行一循环
    for(int j=0;j<Math.abs(i);j++){//第一个点前的空格
    System.out.print(" ");
    }
    System.out.print("*");//第一个点
    if(k-Math.abs(i)>0){//如果不是上下两顶点
    for(int j=0;j<2*(k-Math.abs(i))-1;j++){//打印空格
    System.out.print(" ");
    }
    System.out.println("*");//第二个点
    }
    else System.out.print("\n");//换行
    }
    }
      

  10.   

    有点改动public static void main(String[] args) {
    int k=3;
    for(int i=-k;i<k+1;i++){//一行一循环
    for(int j=0;j<Math.abs(i);j++){//第一个点前的空格
    System.out.print(" ");
    }
    System.out.print("*");//第一个点
    if(k-Math.abs(i)>0){//如果不是上下两顶点
    for(int j=0;j<2*(k-Math.abs(i))-1;j++){//打印空格
    System.out.print(" ");
    }
    System.out.print("*");//第二个点
    }
    System.out.print("\n");//换行
    }
    }
      

  11.   

    jfl                          
      

  12.   

    china's education is just so so .for most of us ....we realized something happend around us ........
      

  13.   

    送分啊。
    您不如加个GPL版权好了,好像谁要抄袭似的。
      

  14.   

    我搞过acm,但不做无聊的事,没分用了,来看看
      

  15.   

              jf  jf
      

  16.   

    可以 但我当初直接System.out.println("***")的 没用循环 呵呵