A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

学完for循环,打印一个空心菱形练练手。但感觉这个代码有些麻烦,谁有更优化 代码,请大神指教。



代码如下:
class TestLingXingKong {
        public static void main(String[] args) {
               
                for (int j = 0;j <=6 ;j++ ) {
                                System.out.print(" ");
                        }
                        System.out.println("*");

                for (int i = 0; i < 6 ;i++ ) {
                        for (int j = 0;j < 6-i ;j++ ) {
                                System.out.print(" ");
                        }
                        System.out.print("*"+" ");
                        for (int j = 0;j <= i-1 ;j++ ) {
                        System.out.print("  ");
                        }
                        System.out.print("*"+" ");       
                System.out.println();
                }

                for (int i = 6; i >= 0 ;i-- ) {
                        for (int j = 0;j < 6-i ;j++ ) {
                                System.out.print(" ");
                        }
                        System.out.print("*"+" ");
                        for (int j = 0;j <= i-1 ;j++ ) {
                        System.out.print("  ");
                        }
                        System.out.print("*"+" ");       
                System.out.println();
                }
                for (int j = 0;j <=6 ;j++ ) {
                                System.out.print(" ");
                        }
                        System.out.println("*");
        }
}


评分

参与人数 1技术分 +1 收起 理由
洋葱头头 + 1

查看全部评分

15 个回复

倒序浏览
写点注释啊,兄弟 看着这代码有点崩溃
回复 使用道具 举报
同上。。。
回复 使用道具 举报
确实,养成写注释的好习惯,对阅读者以后自己重新查看都有好处
回复 使用道具 举报
代码不写注释。。。。
回复 使用道具 举报
兄台提醒的是,以后再写代码都写上注释
回复 使用道具 举报
能不能一次搞定 代码量有点大了
回复 使用道具 举报
lingXing.java

  1. package test;

  2. /**
  3. *  内容是输出一个空心菱形
  4. * @author 瞎猫碰到死老虎
  5. *
  6. */

  7. public class linXing {

  8.         public static void main(String[] args) {               
  9.                 int n=15;
  10.                 lingxing(n);

  11.         }
  12.        
  13.         //输出一个n行的菱形
  14.         public static void lingxing(int n){
  15.                 //先输出上半部分
  16.                 for(int i=0;i<n;i++){        //输出n行
  17.                         for(int j=0;j<n+i;j++){  //每行打印n+i字符
  18.                                
  19.                                 if(j==n+i-1||j==n-1-i){ //如果是最后一个字符或对称的位置,则显示*号
  20.                                         System.out.print("*");
  21.                                 }else{
  22.                                         System.out.print(" ");
  23.                                 }
  24.                                
  25.                         }
  26.                         System.out.println();
  27.                 }
  28.        
  29.                 //输出下部
  30.                 for(int i=0;i<n-1;i++){     //输出n-1行
  31.                         for(int j=0;j<2*(n-1)-i;j++){        //每行打印2*(n-1)-i个字符
  32.                                
  33.                                 if(j==2*(n-1)-i-1||j==i+1){   //如果是最后一个字符或对称的位置,则显示*号
  34.                                         System.out.print("*");
  35.                                 }else{
  36.                                         System.out.print(" ");
  37.                                 }
  38.                                
  39.                         }
  40.                        
  41.                         System.out.println();
  42.                 }
  43.                
  44.         }

  45.        

  46. }
复制代码

lingxing.java
  1. package test;

  2. public final class lingxing {
  3.        
  4.         public lingxing(int n){
  5.                 for(int i=0;i<n;i++){
  6.                         for(int j=0;j<n+i;j++){
  7.                                
  8.                                 if(j==n+i-1||j==n-1-i){
  9.                                         System.out.print("*");
  10.                                 }else{
  11.                                         System.out.print(" ");
  12.                                 }
  13.                                
  14.                         }
  15.                         System.out.println();
  16.                 }
  17.                
  18.                 for(int i=0;i<n-1;i++){
  19.                         for(int j=0;j<2*(n-1)-i;j++){
  20.                                
  21.                                 if(j==2*(n-1)-i-1||j==i+1){
  22.                                         System.out.print("*");
  23.                                 }else{
  24.                                         System.out.print(" ");
  25.                                 }
  26.                                
  27.                         }
  28.                        
  29.                         System.out.println();
  30.                 }
  31.                
  32.         }



  33. }
复制代码



回复 使用道具 举报
不错,学习到了
回复 使用道具 举报

不错,赞一个
回复 使用道具 举报
楼主你要是工作了这么干得把人急死..
回复 使用道具 举报
不错啊!自主应用。值得学习这种精神。但是没有注释。。。。希望真的要养成习惯呢
回复 使用道具 举报
这是什么啊?
回复 使用道具 举报
顶顶顶顶顶顶顶顶顶顶
回复 使用道具 举报

for循环,你们还没学到吗?
回复 使用道具 举报
看得代码有点晕,但是感觉很厉害的样子!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马