双层for循环
中心思想:外圈控制列,内圈控制行。
解析:也就是外层循环控制循环多少次,内 层循环控制每一次的循环次数。
核心细节:尖上一般是小于 尖往下 一般是小于
外循环:
- 表达式1如果有变化 就是每一行不是有规律的在变例如(7)
- 表达式2就是控制行变化的范围 主要变化为i<=x 表示在表达式1到x的范围内 i>=1这种变化就是表达式3 在递减
- 表达式3 一般为i++ i-- 不规律变化为每一次递增或递减不规律 例如(7)
内循环:控制每一次循环中间循环多少次(我也讲不清楚 只可意会)
1.表达式1 i=C(c为实数) i=x(x为未知数) 这两种变化取决于表达式2
这种变化 只可意会 不知道怎么言传
2表达式2: j<=5主要就是 1-5 1-4 1-3 1-2 j>=5
话不多说:下面是几种变化
(1)
public static void main(String[] args) {
/*
*
**
***
****
*****
*/
for(int x=1;x<=5;x++){ //为什么x<=5 因为有5行
for(int y=1;y<=x;y++) { // 1-1 1-2 1-3 1-4 1-5 这里y<=x 因为内循环控制每次循环的次数
System.out.print("*");
}
System.out.println();
}
}
}
(2)
public class Demo1 {
public static void main(String[] args) {
/*
54321
5432
543
54
5
思想: 第一尖朝下 有外部变量
行没变
列在变
看第一列是5 第二列是4 ...
要改内循环
既然第一列是5 那y=5 肯定不能改
内循环的数字一直在递减 y--
* */
//行循环:
for(int x=0;x<=5;x++) { //既然是五行 那外循环就不会变
for(int y=5;y>=x;y--) { //形状变了 就是列在改变
System.out.print(y); //如何保证 最里面一列不被改变 那就要看 y的值
}
System.out.println();
}
}
}
(3)
public class Demo2 {
public static void main(String[] args) {
/*
*****
****
***
**
*
*/
//从一个矩形在往下推:怎么把他改变一个倒立的三角形;
for(int x=0;x<=5;x++) {
for(int y=x;y<=5;y++) { //0-5 4-5 3-5 每一次的循环 是不是越来越少
System.out.print("*");
}
System.out.println();
}
}
}
(4)
/*
思路:在一个正方形里面切割出我们的需要的正三角形,而空出的两个三角形其实我们只需要考虑左边的那个,用空格键打出一个直角三角形,然后用符号或者数字打出我们的三角形。
*******
*****
***
*
*/
public class Demo14 {
public static void main(String[] args) {
//打印倒立的三角形
for (int m = 1; m <= 4; m++) {
//打印空格
for (int n = 0; n <= m; n++) {
System.out.print(" ");
}
//打印*
for (int x = 1; x <= 7 -2 * (m - 1); x++) {
System.out.print("*");
}
System.out.println();
}
}
}
(5)
public class Demo5 {
public static void main(String[] args) {
/*
54321
5432
543
54
5
*/
for(int x=1;x<=5;x++) { //只要是5 行外循环就一定不会该变
for(int y=5;y>=x;y--) { //最里面一行=5 y=5就不能变 ,
//为什么y>=x 5~1是5个数 5~2是四个数 以此类推(简单讲就是第一行是5个数第二行是4个数)
System.out.print(y);
}
System.out.println();
}
}
}
(6)
/*
1
22
333
4444
55555
尖上内中等外
*/
public class demo11 {
public static void main(String[] args) {
int a=0;
for (int i = 1; i <=5; i++) {
a++;
for (int j = 1; j <= i; j++) {
System.out.print(a);
}
System.out.println();
}
}
}
(7)
public class demo1 {
/*
*******
*****
***
*
外圈控制列 内圈控制行
这里我们可以看到行跟列都在变
*/
public static void main(String[] args) {
for(int i=7;i>=1;i -= 2) { //外循还控制行数,第i+1行总是比i行少2个 i>=1:因为最后一行不能是0个人
for (int j = 0; j <i; j++) { //内循环控制星号的个数
System.out.print("*");
}
System.out.println();
}
}
}