1、输出一个4行5列的星星(*)图案
需求:输出一个4行5列的星星(*)图案。
结果:
*****
*****
*****
*****
循环嵌套:就是循环体语句本身是一个循环语句。
结论:
外循环控制的是行,内循环控制的是列
/*
* 需求:输出一个4行5列的星星(*)图案。
* 结果:
* *****
* *****
* *****
* *****
*
* 循环嵌套:就是循环体语句本身是一个循环语句。
*
* 结论:
* 外循环控制的是行,内循环控制的是列
*/
public class ForForDemo {
public static void main(String[] args) {
//原始的做法
System.out.println("*****");
System.out.println("*****");
System.out.println("*****");
System.out.println("*****");
System.out.println("-------------------");
//虽然我们完成了题目的要求,但是不好
//假如我们有很多这样的要求,而且行和列是变化的
//所以我们要改进目前的代码的写法
//我要在一行上输出一颗*
//System.out.println("*");
//我要在一行上输出5颗*
/*
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=1; x<=5; x++) {
System.out.print("*");
}
//采用下面的内容就可以实现换行
System.out.println();
//第二行的5颗*
for(int x=1; x<=5; x++) {
System.out.print("*");
}
System.out.println();
//第三行的5颗*
for(int x=1; x<=5; x++) {
System.out.print("*");
}
System.out.println();
//第四行的5颗*
for(int x=1; x<=5; x++) {
System.out.print("*");
}
System.out.println();
*/
//重复的代码执行多次,用循环改进
for(int y=1; y<=4; y++) {
for(int x=1; x<=5; x++) {
System.out.print("*");
}
System.out.println();
}
System.out.println("-------------------");
for(int y=1; y<=7; y++) {
for(int x=1; x<=8; x++) {
System.out.print("*");
}
System.out.println();
}
}
}
2、循环嵌套练习
2.1、打印正三角形
需求:请输出如下图形
*
**
***
****
*****
/*
* 需求:请输出如下图形
* *
* **
* ***
* ****
* *****
*/
public class ForForTest {
public static void main(String[] args) {
//通过简单的观察,我们发现这是一个5行的,列数变化的形状
//首先来实现一个5行5列的形状
for(int x=1; x<=5; x++) {
for(int y=1; y<=5; y++) {
System.out.print("*");
}
System.out.println();
}
System.out.println("----------------------");
//虽然我们实现了一个5行5列的形状
//但是这不是我们想要的
//我们要的形状是列数变化的
//怎么办呢?
//第一行:1 y=1; y<=1
//第二行:2 y=1; y<=2
//第三行:3 y=1; y<=3
//第四行:4 y=1; y<=4
//第五行:5 y=1; y<=5
//我们需要一个变量的变量是从1开始,到5结束
int z = 1;
for(int x=1; x<=5; x++) {
for(int y=1; y<=z; y++) {
System.out.print("*");
}
System.out.println();
z++;
}
System.out.println("----------------------");
//我们现在已经实现了我们的需求,但是我们继续观察会发现
//第一次:x的值是1
//第二次:x的值是2
//...
//x和z是一样的变化过程,这样的话,我们就可以省略z,直接用x替代
for(int x=1; x<=5; x++) {
for(int y=1; y<=x; y++) {
System.out.print("*");
}
System.out.println();
}
System.out.println("----------------------");
}
}
2.2、打印九九乘法表
需求:在控制台打印九九乘法表
\t:转移字符,表示一个tab键的位置
/*
* 需求:在控制台打印九九乘法表
*
* \t:转移字符,表示一个tab键的位置
*/
public class ForForTest2 {
public static void main(String[] args) {
//先打印一个9行9列的星形(列是变化的)
for(int x=1; x<=9; x++) {
for(int y=1; y<=x; y++) {
System.out.print("*");
}
System.out.println();
}
System.out.println("------------");
/*
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
...
*/
for(int x=1; x<=9; x++) {
for(int y=1; y<=x; y++) {
System.out.print(y+"*"+x+"="+y*x+"\t");
}
System.out.println();
}
}
}