对于一个问题,要学者换个角度,看问题的本质;
我们要在一张白纸上面画一个东西,本质是一个多少行多少列的任务;
那么一个外出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();
}
}
}