一、总体介绍
在JavaSE中,有三种常用的循环结构,分别是for循环、while循环和do-while循环。
我们先来总体简单介绍一下三种循环:
1. for循环:for循环是最常用的循环结构之一,通常用于循环遍历数组或集合中的元素;
2.while循环:while循环在循环开始之前判断条件是否成立,只有条件为true时才会执行循环体;
3.do-while循环:do-while循环与while循环类似,唯一的区别是do-while循环会至少执行一次循环体,然后再根据条件判断是否继续循环;
需要注意的是,for与while循环是执行0~N次,而do-while循环是执行1~N次。
其次分别详细介绍一下这三种循环体。
二、for循环
for循环,又称计数循环,在某个范围内,重复执行循环体内的代码。
循环要素:1,初始值;2,终止条件;3,步长;
for循环语句:
for( 表达式1(初始值) ; 表达式2(终止条件) ; 表达式3(步长) ){
循环体;
}
详细执行步骤:(1) 先执行表达式1,且只执行一次;
(2) 再执行表达式2,判断是否符合;
(3) 符合表达式2,则执行循环体,并在执行完循环体后执行表达式3,再跳回(2)直到不符合表达式2;
(4)不符合表达式2,跳出循环,循环结束;
注意:1. 表达式1,做初始化工作,可放在for语句前;
2. 表达式2只能是布尔型,只有符合表达式2,才能执行循环体;
3. 表达式3表示步长,比如 i++ 表示步长为1,i += 2 表示步长为2;
4. for循环执行次数可以执行0次,也可执行无数次;
for循环的例子:
public class For_01 {
public static void main(String []args){
for (int i = 0; i < 10 ; i++) {
System.out.println(i);
}
int j = 0;//初始值可写在外面
for(; j<5 ; j++){
System.out.println(j);
}
System.out.println(j);
//步长为2
for(int k = 0 ; k<5 ; k += 2){
System.out.println(k);
}
}
}
三、while循环
while循环,又称真假循环,当条件为真时,就执行循环体。
循环要素:1,布尔类型表达式;
while循环语句:
while( 布尔类型表达式 ){
循环体;
}
详细执行步骤:(1) 先判断布尔类型是否为真,也就是是否符合条件,符合执行(2),否则执行(3);
(2) 执行一次循环体,执行(1);
(3) 跳出循环,循环结束;
注意:1. while循环与for循环的执行次数类似,能执行0次,也可执行无数次;
while循环的例子:
public class While_01 {
public static void main(String[] args) {
int i = 0;
while(i<5){
System.out.println(i);
i++;
}
}
}
四、do-while循环
do-while循环,与while循环类似,当条件为真时,就执行循环体。
do-while循环语句:
do{
循环体;
}while( 布尔类型表达式 );
详细执行步骤:(1)先执行一次循环体,再判断布尔类型是否为真(是否符合条件),符合执行(2),否则执行(3);
(2) 执行一次循环体,执行(1);
(3) 跳出循环,循环结束;
注意:1. do-while执行次数与另外俩个不同,do-while循环体最少执行一次,也就是说循环体必然会执行一次;
do-while循环的例子:
public class While_02 {
public static void main(String[] args) {
int i = 110;
do{
System.out.println(i);
}while(i<10);
}
}
五、嵌套循环
顾名思义,嵌套循环就是在循环内部还有循环。
注意:1.外层循环执行一次,内层循环执行一轮;
2.在二维循环中,即一个循环内部只有一个循环,外层循环模拟的是列,内层循环模拟的是行,二位循环可以模拟二维平面表;
嵌套循环的例子:
public class For_02 {
public static void main(String[] args) {
//外层循环1次,内层循环6次(一轮),总共30次循环
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 6; j++) {
System.out.print( 0 + " ");
}
System.out.println();
}
}
}
六、循环的一些题目
1. 计算1~100的奇数和。
解:
public class For_04 {
public static void main(String[] args) {
//1~100的奇数和
int sum = 0;
for(int i = 1; i<= 100;i += 2){
sum += i;
}
System.out.println("1~100的奇数和为: " + sum);
}
}
2. 打印 9×9乘法表。
解:
public class For_03 {
public static void main(String[] args) {
for(int i = 1 ; i < 10; i++){
for(int j = 1 ; j <= i; j++){
System.out.print(j + "×" + i + "=" + (i*j) + " ");
}
System.out.println();
}
}
}
3. 鸡兔同笼问题,一共35个头,94只脚,问兔子和鸡各多少只。
解:(两种方法,第一种为穷举法,循环次数为100*100次;第二种的循环次数减半,只有100次)
public class For_06 {
//鸡兔同笼,35头,94脚
//i+j=35
//2*i + 4*j = 94
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
for (int j = 0; j < 100; j++) {
if((i + j == 35) && (2 * i + 4 * j ==94)){
System.out.println("鸡:" + i + " 兔:" + j);
}
}
}
for (int i = 0; i < 100; i++) {
int j = 35 - i;
if(2 * i + 4 * j ==94){
System.out.println("鸡:" + i + " 兔:" + j);
}
}
}
}