java用循环画三角形思路
对于一个问题,要学者换个角度,看问题的本质;
我们要在一张白纸上面画一个东西,本质是一个多少行多少列的任务;
那么一个外出for可以控制行,内部循环可以控制列的任务数;
注:每次打印一个字符就是一次任务,包括空格;
有了思路:乘法口诀,等边三角,画‘回’字都不在话下;
扩展:试着在一个循环里面用if来取代循环,让3个循环变成两个;然后试着让两个循环变成一个;
package basis.week01;
public class Test03 {
// 画直角三角形
public static void main(String[] args) {
// 1、原始思路,画一个长方形(正方形也是一种特殊的长方形)
// //外循环控制行
// for(int i=1;i<=9;i++) {
// for(int j=1;j<=9;j++) {
// //内循环控制每列做多少次事情
// //每次做9次固定
// System.out.print("*");
// }
// //外循环负责一行所有事情做完之后剩下的事情,比如换行
// System.out.println();
// }
// // 2、思路进一步
// // 外循环控制行
// for (int i = 1; i <= 9; i++) {
// // 内循环要做两种事情了,一种画*,一种话+,但是一行一共完成9次就好了
// for (int j = 1; j <= 8; j++) {
// // 内循环控制每列做多少次事情
// // 每次做8次固定
// System.out.print("*");
// }
// for (int x = 1; x <= 1; x++) {
// // 内循环控制每列做多少次事情
// // 上面完成了8次*,还剩一次任务没有完成
// System.out.print("+");
// }
// // 外循环负责一行所有事情做完之后剩下的事情,比如换行
// System.out.println();
// }
// // 3、思路进二步,里面一共就干了9次活,那么只要总和满足9次就好了,我们就可以联动了
// //*号越来越多,直角在左下方
// for (int i = 1; i <= 9; i++) {
// for (int j = 1; j <= i; j++) {
// System.out.print("*");
// }
// for (int x = 1; x <= 9-i; x++) {
// System.out.print(" ");
// }
// System.out.println();
// }
// //*号越来越少,直角在左上方
// for (int i = 1; i <= 9; i++) {
// for (int j = 1; j <= 10-i/*此时i起始就是1了,9-1就是8了,少了一次,稍微处理一下就可以了*/; j++) {
// System.out.print("*");
// }
// for (int x = 1; x < i; x++) {
// System.out.print(" ");
// }
// System.out.println();
// }
// //*号越来越少,直角在右上方
// //那么这种就是空格越来越多,而且空格的任务要先做
// for (int i = 1; i <= 9; i++) {
// for (int x = 1; x <= i-1; x++) {
// System.out.print(" ");
// }
// for (int j = 1; j <= 10-i/*此时i起始就是1了,9-1就是8了,少了一次,稍微处理一下就可以了*/; j++) {
// System.out.print("*");
// }
// System.out.println();
// }
//*号越来越多,直角在右下方
//那么这种就是空格越来越少,而且空格的任务要先做
for (int i = 1; i <= 9; i++) {
for (int x = 1; x <= 9-i; x++) {
System.out.print(" ");
}
for (int j = 1; j <= i/*此时i起始就是1了,9-1就是8了,少了一次,稍微处理一下就可以了*/; j++) {
System.out.print("*");
}
System.out.println();
}
}
}