1、循环的分类
while:事先不需要知道循环执行多少次。(先判断,后执行)
do-while:同上,不知道循环次数。(先执行,后判断)
for:知道循环的次数。
2、while循环
(1)格式及说明
while(继续条件){
//循环体
执行语句
}
while执行顺序:当程序遇到while关键字时,JVM首先会运算while后面的条件表达式,当条件表达式为true时,就会执行while后面大括号中的语句,当把大括号中的所有语句执行完之后,会又回到while的条件表达式处再次判断,若还为true,就继续执行大括号中的语句,若为false就跳过大括号中的所有语句,继续往下执行
class whileDemo{
public static void main(String[] args){
int i=1;
while(i<10){
System.out.println("i"+i);
}
System.out.println("over");
}
}
上述循环是个无限循环(死循环),主要因为是i变量一直为1,每次判断i<10都成立,导致选好条件结束不了。程序永远卡在循环这个地方执行。
(2)图形说明
(3)注意事项
while循环的括号中的表达式计算结果必须为boolean类型的值。
while循环的括号中不能直接写false常量。
while循环的括号后面不要写分号,循环控制的语句的代码用大括号括起来。
while循环控制的条件变量一定要更新,保证循环能够正常结束。
3、do-while循环
格式及图解
do{
执行语句;
}while(继续条件);
首先执行循环体,然后计算循环继续条件。如果计算结果为true,则重复执行循环体;如果为false,则终止do-while循环。while循环和do-while循环的差别在于:计算循环继续条件和执行循环体的先后顺序不同
4、for循环
(1)格式与图解
for(初始操作;循环继续条件;每次迭代后的操作){
执行语句;
}
for循环只执行初始动作一次,,当循环继续条件为真时,重复执行循环体中的语句,然后完成每次迭代后的操作。
说明:一般情况下,for循环使用一个变量来控制循环体的执行次数,以及什么时候循环终止,这个变量称之为控制变量。初始化动作是指初始化控制变量,每次迭代后的动作通常会对控制变量做自增或自减,而循环继续条件检验控制变量是否达到终止值。
(2)注意事项
循环继续条件语句的结果是一个boolean类型。
循环体如果是一条语句,大括号可以省略,有左大括号就没有分号,有分号没有左大括号。
(3)嵌套循环
嵌套循环是由一个外层循环和一个或多个内层循环组成的。每当重复执行一次外层循环时将再次进入内部循环,然后重新开始。
5、流程控制
break语句和continue语句
break:终止该层循环。
continue:跳过该层循环。
注意事项:
若这两个语句离开应用范围,存在时没有意义的。
这两个语句单独存在时后面都不能有语句,因为执行不到。
continue语句是跳过本次循环,继续执行下次循环。
标签的出现,可以让这两个语句作用于指定的循环。
break是终止循环,即在程序中遇到break,那么break所属的循环将结束。
for(int x=0;x<3;x++){
if(x==1)
break;
System.out.println("x="+x);
}
continue是结束本次循环,继续执行下次循环,循环是不会结束的。
for(int x=0;x<10;x++){
if(x%2==0)
continue;
System.out.println("x="+x);
}
6、经典例题
(1)编写程序,提示用户输入一个1到15之间的整数,然后显示一个金字塔形状的图案,如下面的运行示例所示:
import java.util.*;
class Class15{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("Enter the line number:");
int line=scanner.nextInt();
for(int i=0;i<line;i++){
for(int k=0;k<line-i-1;k++){
System.out.print("\t");
}
//i=3
for(int j=-i;j<=i;j++){
System.out.printf("\t"+(Math.abs(j)+1));
}
System.out.println();
}
}
}
运行结果:
(2)编写程序读取整数,找出它们的最大数,然后计算该数的出现次数。假设输入是以0结束的。假定输入是3 5 2 5 5 5 0,程序找出最大数5,而5出现的次数是4。
import java.util.Scanner;
class Home18{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("Enter numbers:");
int max=Integer.MIN_VALUE;
int count=0;
while(true){
int num=scanner.nextInt();
if(num==0){
break;
}
if(num>max){
max=num;
count=1;
}else if(num==max){
count++;
}
}
System.out.println("max="+max+",count="+count);
}
}
(3)打印空心菱形
class diamond{
/*
i j k
* 1 1 3
* * 2 1 2 2
* * 3 1 2 3 1
* * 4 1 2 3 4 0
* * 5 1 2 3 1
* * 6 1 2 2
* 7 1 3
*/
public static void main(String[] args){
for(int i=1;i<=7;i++){
for(int k=1;k<=Math.abs(i-4);k++){
System.out.print(" ");
}
for(int j=1;j<=i&&j+i<=8;j++){
if(j==1||j==i||j+1==8){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println();
}
}
}