一. for循环双层嵌套
首先内层循环属于外层循环循环体的一部分,当循环体执行完以后外层循环才进入第二次循环,此过程中内层循环需要执行符合条件的完整循环。(外循环控制行数,内循环控制每一行的个数)
for循环的双层嵌套只要分为两种类型:内外嵌套独立、内外嵌套相关。
1.内外嵌套独立
下面以一些简单常见题目为例:
import java.util.Scanner;
public class Demo7 {
@SuppressWarnings("resource")
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
* 嵌套循环
* *****
* *****
* *****
*/
for(int j=1;j<=5;j++){ //外循环 控制行数 j<=5成立时,继续
for(int i=1;i<=5;i++){ //内循环 控制输出内容
System.out.print("*");
} //执行结束再返回外循环
System.out.println();
}
/*
*
**
***
****
*/
for(int i=1;i<=5;i++)
{
for(int j=1;j<=i;j++){
System.out.print("*");
}
System.out.println();
}
/*
1
12
123
1234
*/
// 当i=3,j输出1234
for(int i=1;i<=5;i++)
{
for(int j=1;j<=i;j++){
System.out.print(j);
}
System.out.println();
}
/*
九九乘法表
*/
for(int i=1;i<9;i++)
{
for(int j=1;j<=i;j++){
System.out.print(j+"*"+i+"="+j*i+" ");
}
System.out.println();
}
}
}
打印结果(输入5为例):
2. 内外嵌套相互关联
内部循环依赖受控于外部循环。外部循环控制结果出现几行,内部循环控制每行出现字符的个数。
int n=4;
for(int i=0;i<n;i++) {
for(int j=0;j<i+1;j++) {
System.out.print("*");
}
System.out.print("\n");
}
外部循环很容易理解,我要4行,所以循环4次。然后,内部循环
第一行(i=0)出现一次字符,内部循环一次(j=0;j<1;j++);
第二行(i=1)出现二次字符,内部循环二次(j=0;j<2;j++);
第三行(i=2)出现三次字符,内部循环三次(j=0;j<3;j++);
第四行(i=3)出现四次字符,内部循环四次(j=0;j<4;j++);
所以内部循环条件为(j=0;j<i+1;j++),结果出现一个直三角形(外部循环变量大于内部循环变量为正三角形;外部循环变量小于内部循环变量为倒三角形)。
以下一菱形为例:
public class Demo8 {
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
* 打印实心菱形
*/
for(int i=1;i<=4;i++)
{
//先输出空格 3 2 1 0
for(int j=1;j<=4-i;j++){
System.out.print(" "); //输出空格
}
//再输出*
for(int j=1;j<=2*i-1;j++){
System.out.print("*"); //输出*
}
System.out.println();
}
for(int i=1;i<=3;i++)
{
//先输出空格 1 2 3
for(int j=1;j<=i;j++){
System.out.print(" "); //输出空格
}
//再输出*
for(int j=1;j<=7-2*i;j++){
System.out.print("*"); //输出*
}
System.out.println();
}
/*
* 打印空心菱形
*/
for(int i=1;i<=4;i++)
{
//先输出空格 3 2 1 0
for(int j=1;j<=4-i;j++){
System.out.print(" "); //输出空格
}
//再输出*
for(int j=1;j<=2*i-1;j++){
if(j==1||j==2*i-1)
System.out.print("*"); //输出*
else
System.out.print(" ");
}
System.out.println();
}
for(int i=1;i<=3;i++)
{
//先输出空格 1 2 3
for(int j=1;j<=i;j++){
System.out.print(" "); //输出空格
}
//再输出*
for(int j=1;j<=7-2*i;j++){
if(j==1||j==7-2*i)
System.out.print("*"); //输出*
else
System.out.print(" ");
}
System.out.println();
}
}
}
见证奇迹的时刻到了,哈哈~~
条理有点凌乱,有点忙,持续更新中,感谢大家的支持