一,嵌套for循环
–1,概述
常用于各种算法的实现。还可以打印各种图形。
–2,语法
for(1; 2 ;3 ){//外循环
for(1;2;3){//内循环
}
}
–3,特点
–外循环 执行1次,内循环执行N次
–外循环控制行,内循环控制列
–4,测试
package cn.tedu.basic;
//测试 嵌套for循环
public class Test1 {
public static void main(String[] args) {
// method();//1,外循环 执行1次,内循环执行N次
// method2();//2,外循环控制行,内循环控制列
method3();//3,练习:打印5行5列的*
}
//3,练习:打印5行5列的*
public static void method3() {
for(int i = 1;i <= 5; i++) {//外循环控制行,执行5次
for(int j = 1;j <= 5; j++) {//内循环控制列,执行5次
System.out.print("");//同行展示
}
System.out.println();//换行
}
}
//当i=1时,满足了i<=2的判断条件,执行了第三大步,同一行展示了*****,换行
//当i=2时,满足了i<=2的判断条件,执行了第三大步,同一行展示了*****,换行
//2,外循环控制行,内循环控制列
public static void method2() {
for(int i = 1; i <= 2 ;i++) {//外循环执行2次
for(int j = 1; j <= 5 ;j++) {//内循环执行5次
System.out.print("");//同一行
}
System.out.println();//换行
}
}
//当i=1时,满足了i<4的判断条件,执行了第三大步,输出了i的值1,j的值12345
//当i=2时,满足了i<4的判断条件,执行了第三大步,输出了i的值2,j的值12345
//当i=3时,满足了i<4的判断条件,执行了第三大步,输出了i的值3,j的值12345
//特点1,外循环 执行1次,内循环执行N次
public static void method() {
for(int i = 1 ; i < 4 ; i++) {//外循环执行3次
System.out.println(i);//输出外循环i的值
for(int j = 1 ; j < 6 ; j++ ) {//内循环执行5次
System.out.println(j);//输出内循环j的值
}
}
}
}
--5,练习
package cn.tedu.basic;
//测试 嵌套for循环
public class Test2 {
public static void main(String[] args) {
// method();//打印左直角三角形
method2();//打印99乘法表
}
//打印99乘法表
public static void method2() {
for(int i = 1 ; i <= 9; i++) {//外循环控制行
//内循环控制列,列数在变,不能写死
for(int j = 1 ; j <= i; j++) {
// System.out.print("3*2=6");//同行展示
// System.out.print("i*j=i*j");//同行展示
System.out.print(i+"*"+j+"="+i*j+" ");//同行展示
}
System.out.println();//换行
}
}
//当i=1时,满足了i<=5判断条件,进去执行第三大步int j=1;j<=1,内循环能执行1次,打印*,换行
//当i=2时,满足了i<=5判断条件,进去执行第三大步int j=1;j<=2,内循环能执行2次,打印**,换行
//当i=3时,满足了i<=5判断条件,进去执行第三大步int j=1;j<=3,内循环能执行3次,打印***,换行
//当i=4时,满足了i<=5判断条件,进去执行第三大步int j=1;j<=4,内循环能执行4次,打印****,换行
//当i=5时,满足了i<=5判断条件,进去执行第三大步int j=1;j<=5,内循环能执行5次,打印*****,换行
public static void method() {
for(int i = 1 ; i <= 5; i++) {//外循环控制行
//内循环控制列,列数在变,不能写死
for(int j = 1 ; j <= i; j++) {
System.out.print("*");//同行展示
}
System.out.println();//换行
}
}
}
二,循环结构2:while
–1,概述
和for一样,可以解决 需要重复执行的 需求
–2,语法
//for(开始位置;循环条件;更改条件){ 重复执行的代码/循环体 }
while(循环条件){
重复执行的代码/循环体
}
–3,练习
package cn.tedu.basic;
import java.util.Random;
import java.util.Scanner;
//测试 while循环
//–产生一个随机数,和用户一直在输入的数字比较。
public class Test3 {
public static void main(String[] args) {
//1,产生随机 整数-nextInt(N)-产生N范围内的随机数(默认从0开始)
int suiji = new Random().nextInt(100) +1 ;
System.out.println(suiji);
//死循环–本质就是因为条件永远成立
// for(int i = 0 ; i < 10 ; i–){
//先判断再执行,如果没有满足判断条件,一次也不会执行
// while(suiji > 50){
while(true){
//2,接收用户输入的数字
int input = new Scanner(System.in).nextInt();
//3,开始比
if(input > suiji) {
System.out.println(“大了”);
}else if(input < suiji) {
System.out.println(“小了”);
}else if(input == suiji) {
System.out.println(“猜中了!!!”);
}
}
}
}
三,循环结构3:do…while
–1,概述
和for一样,可以解决 需要重复执行的 需求
–2,语法
//for(开始位置;判断条件;更改条件){循环体}
//while(判断条件){循环体}
do{
循环体
}while(判断条件);
–3,练习
package cn.tedu.basic;
import java.util.Random;
import java.util.Scanner;
//测试 while循环
//–产生一个随机数,和用户一直在输入的数字比较。
public class Test3 {
public static void main(String[] args) {
//1,产生随机 整数-nextInt(N)-产生N范围内的随机数(默认从0开始)
int suiji = new Random().nextInt(100) +1 ;
System.out.println(suiji);
//死循环–本质就是因为条件永远成立
// for(int i = 0 ; i < 10 ; i–){
//先判断再执行,如果没有满足判断条件,一次也不会执行
// while(suiji > 50){
// while(true){
do{
//2,接收用户输入的数字
int input = new Scanner(System.in).nextInt();
//3,开始比
if(input > suiji) {
System.out.println(“大了”);
}else if(input < suiji) {
System.out.println(“小了”);
}else if(input == suiji) {
System.out.println(“猜中了!!!”);
}
}while(suiji > 50);
}
}
–4,总结
–相同点:都可以解决重复执行的问题
–不同点:
-for(开始位置;循环条件;更改条件){循环体}
-要求:知道开始位置,要循环多少次,变化的规律…
-while(判断条件){循环体}
-要求:知道循环的条件,满足就执行,不满足就不执行
-do{循环体}while(判断条件);
-要求:知道循环的条件,保证循环体 最少要执行1次
–死循环:
-本质是因为,循环条件永远成立–必须配合break结束循环!!!
-for(int i = 1;i > 0 ;i++ ){}
-for(;😉{}
-while(true){}
-测试
package cn.tedu.basic;
//测试 死循环
public class Test4 {
public static void main(String[] args) {
//TODO 死循环的不同写法
// for(int i = 1;i > 0 ;i++) {
// for(;😉 {
// while(true){
// System.out.println(1);
// }
//TODO while和do…while的区别
int i = 10;
// while(i > 10){//先判断再执行
// System.out.println(1);
// }
do {//先执行再判断
System.out.println(1);//保证循环体最少执行1次
}while(i > 10);
//TODO 假设你有1个亿,一天花一半,能花多少天
int money = 100000000 ;//定义变量,记录钱
//定义变量,记录天数
int day = 0;
while(money>0) {
//一天花5000000,并修改变量的值
money = money-5000000;
day++;//统计天数
}
System.out.println("能花: "+day+"天.");
}
}
四,break和continue
–1,概述
都是用来 结束循环结构的
break:立刻结束
continue:结束这次循环,还能下次循环
–2,测试
package cn.tedu.basic;
//测试 break和continue
public class Test5 {
public static void main(String[] args) {
for (int i = 1; i <= 100 ; i++) {
if(i % 2 == 0) {//过滤偶数
//1,break和continue都必须出现在循环结构中
System.out.println(i);
// break;//立刻结束
continue;//结束这次,还能继续
//2,break和continue之后不能再出现代码,否则是不可到达的代码
}
}
}
}