学习中不断求解,逻辑思维太乱,需要慢慢的整理,今天整理下双重for的简单循环;给每个做一个思路和步骤解释,转变思维,理解Java的解题逻辑,否则一直无法理解Java思维,现在的弊端就是知识点混乱,逻辑没有,看着略懂,自己写懵逼,把每个代码的逻辑理清然后在写,我想虽然感觉傻逼,前期慢浪费时间,但是会比较巩固吧,加油!
1.代码:
public static void main(String[] args) {
//直角三角形
for (int i = 0; i <= 5; i++) {//初始值i为0;i<=5的条件为i小于等于5;递增,i第一次输出从0开始不断递增,加上=5,一共执行了6次;
//System.out.println("输出:"+i);
//建立第一个循环,控制的是行,外层控制内层;表示最外层循环内层多少次。
for (int j = 0; j <=i; j++) {
//第二个循环控制的是列数,也就是控制外层进行的每一次循环的结果,循环1次出现1个*,两次两个*...类推,有条件控制循环的次数,迭代累加循环;
System.out.print(" *");
//循环输出*这个符号
//Debug时可以看到:
// 第一次的循环i=1,j=1;,也就是说那么外层第一次循环内层里为1个*,记得条件时j< i 的,记录存储这一次,
//第二次的循环i=2,j=2;,也就是说i开始第2次循环了,也就是j最大循环2次,会出现2个*,那么外层的2次循环就是有了3个*,
//在外循环我们设置了一个sout,那么就会出现换行,否则为一条横线,若是在循环里进行换行则会出现竖着的一条线;
//以此类推
}
System.out.println();
}
//倒直角三角,直角在左上
//?这个倒三角直接显示在上面的循环下面,是因为读取的顺序吗?
//在一个类里面的不同或作用域里面我们定义了同变量是不影响的,因为在不同的作用域里,所以不影响
// 输入在同一个作用域里那就会影响了;
for (int a = 0; a <= 5; a++) {//外循环,控制内层循环次数 5次,也就是这里面的行;
for (int b =a; b <= 5; b++) {
//随着a的增加,那么b循环的次数就会减少;
//内循环,只控制控制内层里的内容的循环,
//因为是要倒三角,肯定是越来越少,所以循环条件里的初始值b=a,随着变量a的循环次数增加递增,
// b的初始值越来越大,那么b的循环次数也就越来的越少了,数量就会越来越少;
System.out.print(" !");
}
System.out.println();
//换行操作,要记得这个输出要放在二次循环外面,否则每次循环列的次数是都会进行换行
//将这个放在外层循环里面就是外层循环1结束后进行以此输出,就是换行,也就是一轮内循环结束在内循环结束
//若是想要在最后只输出一次的提示,一定要在循环外面,否则会跟着循环次进行输出;循环多少次,输出多少次;
}
//直角在右上的三角形状;另加一个“ ”4*4的空格的循环三角形
for (int c = 0; c <= 5; c++) {//总循环5次c
for (int y =0; y <c ; y++) {
//要做一个在右上角的直角三角形,我们就在同循环里在加个内循环同步执行;
//要循环五次输出五行的*号,想想我们其实只需要建立一个空格的循环三角形,把*三角形挤过去
//外层行循环第一次的时候,y<c,也就是循环的时候从开始每次比行少一次,外层c从1开始累加,
// y从0开始,但是条件是y<0,所以第一个条件不满足;那么就会跳过第一行,
// 从第二行开始执行,出现空格,将三角形往右边挤,实现右上的直角三角形;
System.out.print(" 0");
//我们执行输出的空格个数 要 与输出的* 的个数相对应,我们使用0来体现执行的过程
}
for (int y = c; y < 5; y++) {
System.out.print(" *");
}
System.out.println();
}
//菱形,打印一个等腰三角形,再打出一个倒等腰三角形就形成了菱形
//等腰三角形:先建立一个左上的空格直角三角形,然后建立一个右下的*直角三角形,
//将*直角的列(内层循环)的条件改为y=x*2-1(就是行的次数*2-1得出双倍的* 然后-1是得以出现第一列为1个*
// 且保持两边的对称 否则每列输出的就是2倍行数量的*;
for (int x = 0; x <= 5; x++) {
for (int y = 0; y < 5-x; y++) {
System.out.print(" |");
}for (int y = 0; y < x*2-1; y++) {
System.out.print(" *");
}
System.out.println();
}
//倒等腰三角形,将等腰三角形的空格改为左下直角,然后在按照右上直角的方法条件设定为*2-1保持对称就好了;
for (int a = 0; a <= 5; a++) {//外循环,控制内层循环次数 5次,也就是这里面的行;
for (int b = 0; b <a; b++) {
//内循环,只控制控制内层里的内容的循环,
//因为是要倒三角,肯定是越来越少,所以循环条件在i最大值的基础上减去i,
System.out.print(" ");
}
for (int b = 0; b <(5-a)*2-1; b++) {
System.out.print(" !");
}
System.out.println();
}
}
2.代码结果: