有个题让打印一个镂空的矩形
我打算输出一个有4行,第一行跟第4行有5个*号,中间两行为前后各一个*组成一个镂空的矩形,但是结果却有偏差,大家可以复制下面我写的代码帮我看下,中间的两行有问题。
因为本人才初学,写的代码可能很硬编,希望高手帮我改下,或者有更好的方法教我一下。不要用太难的方法,我只会FOR循环。谢谢了啊、int i=1,j,k;
        for (;i<=4;i++){
         if (i==1||i==4){
         for (j=1;j<=5;j++)
         System.out.print("*");
         }else {
         for (k=1;k<=5;k++){
        
        
         if (k==1||k==5){
         System.out.print("*");
         System.out.print(" ");
         }
         }
         }System.out.println();
        }
//执行的结果成这样了:
*****
* * 
* * 
*****分不多,见谅啊。

解决方案 »

  1.   

      if (k==1||k==5){
      System.out.print("*");
      }
      else
      {
        System.out.print(" ");
      }
      }
      

  2.   

    for (int i = 0; i < 4; i++) {
    for (int j = 0; j <5; j++) {
    if(i==0||i==3){
    System.out.print("*");
    }else{
    if(j==0||j==4){
    System.out.print("*");
    }else{
    System.out.print(" ");
    }
    }
    }System.out.println();
    }算法没问题,是空格和*所占像素多少引起的,中间空的个数是3个
      

  3.   

    CSDN发帖,你可以选用代码格式,就在字体颜色的右边
      

  4.   

    for 循环,自己试着多走几遍程序,顺一会就会发现问题的。
      

  5.   

    public class TEXT {
    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) ? '*' : ' ');
            }
    }
    }
      

  6.   

    public class TEXT {
    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) ? '*' : ' ');
            }
    }
    }