前言:
1) 当多个因素都在变动时,往往不容易一下子考虑清楚最终的逻辑。
2) 这时,可以先固定一些因素,把变化的因素用常数暂时代替。
3) 程序能够运行起来以后,再逐步把常数替换为可以变化的逻辑。
总结 ----> “常数变易法”是一种渐进式的构造程序的方法。
某些变量是变化的时候,设置这个数值为常量,然后不断变化常量,找出规律,后将常量变更为变量
案例如下:
public class variation {
/**
* 常数变易法
*/
public static void main(String[] args) {
pyramid3();
}
/**
* 打印金字塔
* 0) 先用最原始方式 打印出结果
* 1) 将每一行当做两部分的组合 空格 和 *空格
* 2) 从末尾行开始模拟输出同样效果,然后慢慢开始向上一行推演, 从而找到规律
*
*/
public static void pyramid () {
System.out.println(" *");
System.out.println(" * *");
System.out.println(" * * *");
//System.out.println(" * * * *");
//System.out.println(" * * * * *");
for(int i=0; i<6; i++) System.out.print(" ");
for(int i=0; i<4; i++) System.out.print("* ");
System.out.println();
for(int i=0; i<5; i++) System.out.print(" ");
for(int i=0; i<5; i++) System.out.print("* ");
System.out.println();
}
// 推演后得到规律,打印*金字塔写法:
public static void pyramid1 () {
for(int i=1; i<=6; i++){
for(int j=0; j<=(10 - i); j++) System.out.print(" ");
for(int j=0; j<i; j++) System.out.print("* ");
System.out.println();
}
}
/**
* 打印字母金字塔, 先将最后一行拆分打印对,然后一层层上推,找到循环行号和每一行要打印符号之间的数字关系,然后将行号变更为变量
*/
public static void pyramid2 () {
System.out.println(" A");
System.out.println(" ABA");
System.out.println(" ABCBA");
System.out.println(" ABCDCBA");
//System.out.println(" ABCDEDCBA");
for(int i=0; i<5; i++) System.out.print(" ");
for(int i=0; i<5; i++) System.out.print((char) ('A' + i));
for(int i=3; i>=0; i--) System.out.print((char) ('A' + i));
System.out.println();
}
public static void pyramid3 () {
for(int i=1; i<=6; i++){
for(int j=0; j<(10-i); j++) System.out.print(" ");
for(int j=0; j<i; j++) System.out.print((char) ('A' + j));
for(int j=i-2; j>=0; j--) System.out.print((char) ('A' + j));
System.out.println();
}
}
}