大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全家桶1年46,售后保障稳定
1.4常数变易法
常数变异的思考方法
当程序中有许多因素都在变动的时候,我们可以假设其中的某些变数为常数,把他们写成固定的死值。
将来再用变量替换。
星号金字塔
常数变异典型应用
打印这个金字塔:
*
* *
* * *
* * * *
* * * * *
正常的思路:两层嵌套循环。
/*
*
* *
* * *
* * * *
* * * * *
*/
package ConstantChange;
public class PrintPyramid {
public static void main(String[] args) {
/*System.out.println(" *");
System.out.println(" * *");
System.out.println(" * * *");
// System.out.println(" * * * *");
// System.out.println(" * * * * *");
for(int i=0;i<17;i++){
System.out.print(" ");
}
for(int i=0;i<4;i++){
System.out.print("* ");
}
System.out.println();
for(int i=0;i<16;i++){
System.out.print(" ");
}
for(int i=0;i<5;i++){
System.out.print("* ");
}
System.out.println();*/
//尝试写双层循环,代替上述的这种写5次的三行循环。
//k 0 1 2 3 4 【k】
//? 20 19 18 17 16 【20-k】
//?? 1 2 3 4 5 【k+1】
for(int k=0;k<5;k++){
for(int i=0;i<20-k;i++){
System.out.print(" ");
}
for(int i=0;i<k+1;i++){
System.out.print("* ");
}
System.out.println();
}
}
}
*
* *
* * *
* * * *
* * * * *
字母金字塔
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
/*
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
*/
package ConstantChange;
public class LetterPyramid {
public static void main(String[] args) {
/*// " ABCDCBA"
for(int i=0;i<5;i++){
System.out.print(" ");
}
for(int i=0;i<4;i++){
// System.out.print('A');//常数变异法,这里本应是变动的,先用常数代替
System.out.print((char)('A'+i));//输出ABCDE,强制转换ASCII码
}
for(int i=3-1;i>=0;i--){
System.out.print((char)('A'+i));
}
System.out.println();
// " ABCDEDCBA"
for(int i=0;i<4;i++){
System.out.print(" ");
}
for(int i=0;i<5;i++){
// System.out.print('A');//常数变异法,这里本应是变动的,先用常数代替
System.out.print((char)('A'+i));//输出ABCDE,强制转换ASCII码
}
for(int i=4-1;i>=0;i--){
System.out.print((char)('A'+i));
}
System.out.println();*/
//k
//? 9-k
//?? k
//??? k-2
for(int k=1;k<5;k++){
for(int i=0;i<9-k;i++){
System.out.print(" ");
}
for(int i=0;i<k;i++){
System.out.print((char)('A'+i));//输出ABCDE,强制转换ASCII码
}
for(int i=k-2;i>=0;i--){
System.out.print((char)('A'+i));
}
System.out.println();
}
}
}
A
ABA
ABCBA
ABCDCBA
当变成逐渐熟练之后,常数变异法可能是我们最常用的方法。
打印图形X
试打印出如下图形:
$$ $$
$$ $$
$$ $$
$$ $$
$$ $$
$$$$
$$
$$$$
$$ $$
$$ $$
$$ $$
$$ $$
$$ $$
注意规模可以调整
/*
* 打印图形
试打印出如下图形:
$$ $$
$$ $$
$$ $$
$$ $$
$$ $$
$$$$
$$
$$$$
$$ $$
$$ $$
$$ $$
$$ $$
$$ $$
注意规模可以调整
*/
package ConstantChange;
public class PrintX {
public static void main(String[] args) {
/*//" $$ $$ "
for(int i=0;i<1;i++) System.out.print(" ");
for(int i=0;i<2;i++) System.out.print("$");
for(int i=0;i<10;i++) System.out.print(" ");
for(int i=0;i<2;i++) System.out.print("$");
for(int i=0;i<1;i++) System.out.print(" ");
System.out.println();
//" $$ $$ "
for(int i=0;i<2;i++) System.out.print(" ");
for(int i=0;i<2;i++) System.out.print("$");
for(int i=0;i<8;i++) System.out.print(" ");
for(int i=0;i<2;i++) System.out.print("$");
for(int i=0;i<2;i++) System.out.print(" ");
System.out.println();*/
int LINE = 13;//由于图形的对称性,输入偶数行时,做出的图形+1行
int n = LINE/2;
for(int k=0;k<n;k++){
for(int i=0;i<k+1;i++) System.out.print(" ");
System.out.print("$$");
for(int i=0;i<LINE-3-2*k;i++) System.out.print(" ");
System.out.print("$$");
for(int i=0;i<k+1;i++) System.out.print(" ");
System.out.println();
}
for(int i=0;i<n+1;i++) System.out.print(" ");
System.out.print("$$");
for(int i=0;i<n+1;i++) System.out.print(" ");
System.out.println();
for(int k=n-1;k>=0;k--){
for(int i=0;i<k+1;i++) System.out.print(" ");
System.out.print("$$");
for(int i=0;i<LINE-3-2*k;i++) System.out.print(" ");
System.out.print("$$");
for(int i=0;i<k+1;i++) System.out.print(" ");
System.out.println();
}
}
}
$$ $$
$$ $$
$$ $$
$$ $$
$$ $$
$$$$
$$
$$$$
$$ $$
$$ $$
$$ $$
$$ $$
$$ $$
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/219601.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...