嵌套循环练习1
需求:请输出一个4行5列的星星(*)图案。
结果:
*****
*****
*****
*****
循环嵌套:就是循环语句的循环体本身是一个循环语句。
通过结果我们知道这样的一个结论:
外循环控制行数
内循环控制列数
代码实现
public static void main(String[] args) {
//原始做法
System.out.println("*****");
System.out.println("*****");
System.out.println("*****");
System.out.println("*****");
System.out.println("-------------");
//虽然可以完成需求,但是不是很好
//如果是多行多列就会比较麻烦
//所以我们准备改进
//如何改进呢?
//我先考虑如何实现一行*的问题
//System.out.println("*****");
//我们要想的是如何实现一次输出一颗*的问题
//System.out.println("*");
//System.out.println("*");
//现在虽然可以一次一颗*,但是却换行了,我要求不能换行,怎么办呢?
//输出语句的另一种格式:System.out.print(); 这个是不带换行的
//System.out.print("*");
//System.out.print("*");
//System.out.print("*");
//System.out.print("*");
//System.out.print("*");
//如果我要在一行上打出多颗*,比较麻烦,而代码是重复的,所以我决定用循环改进
for(int x=0; x<5; x++) {
System.out.print("*");
}
//我们可以通过空的输出语句实现换行:System.out.println();
System.out.println();
//既然我可以打出一行,我就可以打出第二行
for(int x=0; x<5; x++) {
System.out.print("*");
}
//我们可以通过空的输出语句实现换行:System.out.println();
System.out.println();
//同理打出第三行,第四行
for(int x=0; x<5; x++) {
System.out.print("*");
}
//我们可以通过空的输出语句实现换行:System.out.println();
System.out.println();
//既然我可以打出一行,我就可以打出第二行
for(int x=0; x<5; x++) {
System.out.print("*");
}
//我们可以通过空的输出语句实现换行:System.out.println();
System.out.println();
System.out.println("-----------------");
//同样的代码出现了4次,说明我们程序写的不好,用循环改进
for(int y=0; y<4; y++) {
for(int x=0; x<5; x++) {
System.out.print("*");
}
//我们可以通过空的输出语句实现换行:System.out.println();
System.out.println();
}
}
结果
*****
*****
*****
*****
-------------
*****
*****
*****
*****
-----------------
*****
*****
*****
*****
嵌套循环练习2
需求:请输出下列的形状
*
**
***
****
*****
public static void main(String[] args) {
//通过简单的观察,我们看到这是一个行是5,列数是变化的形状
//我们先打印出一个5行5列的形状
for(int x=0; x<5; x++) {
for(int y=0; y<5; y++) {
System.out.print("*");
}
System.out.println();
}
System.out.println("--------------");
//我们实现了一个5行5列的形状
//但是这不是我们想要的
//我们要的是列数变化的
//列数是如何变化的呢?
//第一行:1列 y=0,y<=0,y++
//第二行:2列 y=0,y<=1,y++
//第三行:3列 y=0,y<=2,y++
//第四行:4列 y=0,y<=3,y++
//第五行:5列 y=0,y<=4,y++
//在看外循环x的变化,恰好就是x=0,1,2,3,4
//所以这个最终版的程序就是如下
for(int x=0; x<5; x++) {
for(int y=0; y<=x; y++) {
System.out.print("*");
}
System.out.println();
}
}
嵌套循环练习3
需求:在控制台输出九九乘法表。
首先我们写出九九乘法表:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
...
1*9=9 2*9=18 3*9=27 ...
我们先把这个九九乘法表看出是这样的一个形状:
*
**
***
****
*****
******
*******
********
*********
注意:
‘\x’ x表示任意,这种做法叫转移字符。
‘\t’ tab键的位置
‘\r’ 回车
‘\n’ 换行
public static void main(String[] args) {
for (int i = 0; i < 9; i++) {
System.out.println();
for (int j = 0; j < i; j++) {
System.out.print("*");
}
}
System.out.println();
System.out.println("------------------------------------------------");
for (int i = 1; i <= 9; i++) {
System.out.println();
for (int j = 1; j <= i; j++) {
System.out.print(j + "*" + i + "=" + (j * i) + "\t");
}
}
}
结果:
*
**
***
****
*****
******
*******
********
------------------------------------------------
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81