黑马程序员技术交流社区

标题: 学完for循环,打印一个空心菱形练练手 [打印本页]

作者: 豫东少侠    时间: 2015-10-24 22:49
标题: 学完for循环,打印一个空心菱形练练手
学完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("*");
        }
}



作者: 雨来    时间: 2015-10-25 10:05
写点注释啊,兄弟 看着这代码有点崩溃
作者: juejin    时间: 2015-10-25 15:49
同上。。。
作者: 任珅    时间: 2015-10-25 15:58
确实,养成写注释的好习惯,对阅读者以后自己重新查看都有好处
作者: 我爱吃小馒头    时间: 2015-10-25 18:14
代码不写注释。。。。
作者: 豫东少侠    时间: 2015-10-26 23:15
兄台提醒的是,以后再写代码都写上注释
作者: dushine2000    时间: 2015-10-27 13:22
能不能一次搞定 代码量有点大了
作者: kunsongjack    时间: 2015-10-27 13:48
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. }
复制代码




作者: 我若为神    时间: 2015-10-27 14:10
不错,学习到了
作者: 豫东少侠    时间: 2015-10-27 22:52
kunsongjack 发表于 2015-10-27 13:48
lingXing.java

不错,赞一个
作者: wodesteaammajia    时间: 2015-10-27 23:10
楼主你要是工作了这么干得把人急死..
作者: 李志慧    时间: 2015-10-27 23:18
不错啊!自主应用。值得学习这种精神。但是没有注释。。。。希望真的要养成习惯呢
作者: jjw4896774    时间: 2015-10-27 23:28
这是什么啊?
作者: yangshaoqiang    时间: 2015-10-27 23:35
顶顶顶顶顶顶顶顶顶顶
作者: 豫东少侠    时间: 2015-10-28 23:06
jjw4896774 发表于 2015-10-27 23:28
这是什么啊?

for循环,你们还没学到吗?
作者: 特立独行    时间: 2015-10-29 08:14
看得代码有点晕,但是感觉很厉害的样子!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2