秦疆的Java课程笔记:44 流程控制 打印三角形及Debug

发布时间 2023-11-28 15:41:24作者: Acolyte_9527
  • 作业:打印5行三角形
  • 这是我写的:
public class TestDemo1 {  
    public static void main(String[] args) {  
        int line = 5;  //定义总行数line
        for (int i = 1; i <= line; i++){  //i是循环输出每一行
            for(int j = 1; j <= line-i; j++) {  //j是每行循环输出几次空格。函数关系是,j=line-i,即每行输出line-i个空格。
                System.out.print(" ");  
            }  
            for(int k = 1; k <= 2*i-1; k++) {  //k是每行循环输出几次“*”。函数关系式,k=2*i-1,即每行输出2*i-1个“*”。
                System.out.print("*");  
            }  
            System.out.println();  
        }  
    }  
}
====效果如下====
    *
   ***
  *****
 *******
*********
  • 这是秦疆老师写的:
public class TestDemo2 {  
    public static void main(String[] args) {  
        for (int i = 1; i <= 5; i++) {  //i是行数
            for (int j = 5; j >= i; j--) {  
            //输出空格位,逐行递减,4,3,2,1,0
                System.out.print(" ");  
            }  
            for (int j = 1; j<=i ; j++){  
            //输出中线及左侧的“*”,逐行递增,1,2,3,4,5
                System.out.print("*");  
            }  
            for (int j = 1; j<i; j++) {  
            //输出右侧的“*”,逐行递增,0,1,2,3,4
                System.out.print("*");  
            }  
            System.out.println();  
        }  
    }  
}
====效果如下====
     *
    ***
   *****
  *******
 *********
  • 这次到没什么思维上的盲区。只是语句功能还不熟练,反复修改了一会儿。
  • 不同在于,我多定义了一个总行数,可以直接寻找每行空格*总行数第几行的函数关系。这样无论是输出多少行的三角形,只需要修改总行数,就能完成。如果不考虑这个的话,我的代码可以再缩减1行。
  • 而秦疆老师没有定义总行数,所以后面表达空格*数量时也不涉及函数关系,单纯的数数。如果要求的三角形行数变了,他需要改两处地方。
  • 而且秦疆老师在讲述自己思路时,说是把*数量做了一次对折,分成了两半,所以才会有两个输出*的语句。其实这就是把我的一个for循环拆成了两个。
  • 也不知道哪种写法可读性更好,或者效率更高。
  • IDEA中的debug功能,略。