概念:通过某个条件,重复的执行一段逻辑代码
1. 循环语句 while
while语句会反复地进行条件判断,只要条件成立,{}内的执行语句就会执行,直到条件不成立,while循环结束。
while(循环条件){
执行语句
………
}
执行流程图如下:
进阶练习:
1.输入3次密码,则打印密码锁定。
package com.qianfeng.cycle;
import java.util.Scanner;
/**
*
* @Title: PwdDemo.java
* @Package:com.qianfeng.cycle
* @Description: 输入3次密码,则打印密码锁定
* @author:CL
* @date:2020年2月10日
* @version:V1.0
*/
public class PwdDemo {
private static Scanner input;
public static void main(String[] args) {
int number = 3;//密码错误的次数
input = new Scanner(System.in);
boolean flag = true; //控制是否循环
String pwd; //用户密码
int count = 0;//密码次数
while(flag) {
System.out.print("请输入你的密码:");
pwd = input.next();//获取密码
if("123456".equals(pwd)) {
flag = false;//密码正确,退出循环
}else {
count++;//输入密码次数加一
System.out.println("你的密码错误,第"+count+"次错误,密码输入错误超过"+number+"次被锁定");
}
//当我们的密码输错的次数,为3次的时候,退出这个循环
if(count == number) {
flag = false;
}
}
if(count == number) {//判断是否达到锁定次数
System.out.println("你的密码已经被锁定");
}else {
System.out.println("你已经成功登录");
}
}
}
2.循环语句do...while
do…while循环语句将循环条件放在了循环体的后面,这也就意味着,循环体会无条件执行一次,然后再根据循环条件来决定是否继续执行。
do…while循环的执行流程如下图所示
进阶练习:计算 1+3+5+...+99 的和。
package com.qianfeng.cycle;
/**
* @Title: DemoSum4.java
* @Package:com.qianfeng.cycle
* @Description: 计算 1+3+5+...+99 的和
* @author:CL
* @date:2020年2月10日
* @version:V1.0
*/
public class DemoSum4 {
public static void main(String[] args) {
int sum = 0;
int i = 1;
do{
sum += i;
i += 2;
}while(i < 100);
System.out.println("使用do...while语句计算 1+3+5+...+99 的和为:"+sum);
}
}
3.循环语句for
for关键字后面()中包括了三部分内容:初始化表达式、循环条件和操作表达式,它们之间用“;”分隔,{}中的执行语句为循环体。
for(初始化表达式; 循环条件; 操作表达式){
执行语句
………
}
接下来分别用①表示初始化表达式、②表示循环条件、③表示操作表达式、④表示循环体,通过序号来具体分析for循环的执行流程。具体如下:
for(① ; ② ; ③){
④
}
第一步,执行①
第二步,执行②,如果判断结果为true,执行第三步,如果判断结果为false,执行第五步
第三步,执行④
第四步,执行③,然后重复执行第二步
第五步,退出循环
进阶练习:计算 1+2+3+...+100的和
package com.qianfeng.cycle;
/**
* @Title: DemoSum.java
* @Package:com.qianfeng.cycle
* @Description: 计算 1+2+3+...+100的和
* @author:CL
* @date:2020年2月10日
* @version:V1.0
*/
public class DemoSum {
public static void main(String[] args) {
int sum = 0;
for(int i = 1;i <= 100;i++){
sum += i;
}
System.out.println("1+2+3+...+100的和为:"+sum);
}
}
4.无限循环
最简单无限循环格式:
while(true){}
或
for(;;){}
无限循环存在的原因是并不知道循环多少次,需要根据某些条件,来控制循环。
5.嵌套循环
嵌套循环是指在一个循环语句的循环体中再定义一个循环语句的语法结构。while、do…while、for循环语句都可以进行嵌套,并且它们之间也可以互相嵌套,如最常见的在for循环中嵌套for循环,格式如下:
for(初始化表达式; 循环条件; 操作表达式) {
………
for(初始化表达式; 循环条件; 操作表达式) {
执行语句
………
}
………
}
进价练习:(循环)*读入一个整数 n,输出如下图形
n = 3
*
***
*****
n = 4
*
***
*****
*******
思路:
I. 读入的整数 n,就是外层循环的循环次数。
II. 对于每一行,要做的事情:
1). 输出若干个空格;
2). 输出若干个星;
3). 换行。
提示:输出不换行,用 System.out.print()。
package com.qianfeng.cycle;
import java.util.Scanner;
/**
*
* @Title: Graph.java
* @Package:com.qianfeng.cycle
* @Description: 由*组成金字塔图形
* @author:CL
* @date:2020年2月10日
* @version:V1.0
*/
public class Graph {
private static Scanner input;
public static void main(String[] args) {
input = new Scanner(System.in);
System.out.print("请输入一个整数:");
int num = input.nextInt();//获取行数
for(int i = 1;i <= num;i++){
for(int k = 1;k <= num-i;k++){//输出空格
System.out.print(" ");
}
for(int j = 1;j <= 1+(i-1)*2;j++){//输出*
System.out.print("*");
}
System.out.println();//换行
}
}
}
6.跳出语句(break,continue)
跳转语句用于实现循环执行过程中程序流程的跳转,在Java中的跳转语句有break语句和continue语句。接下来分别进行详细地讲解。
6.1 break语句
在switch条件语句和循环语句中都可以使用break语句。当它出现在switch条件语句中时,作用是终止某个case并跳出switch结构。当它出现在循环语句中,作用是跳出循环语句,执行后面的代码。
实例:当变量x的值为3时,使用break语句跳出循环,代码如下所示。BreakDemo.java
public class BreakDemo {
public static void main(String[] args) {
int x = 1; // 定义变量x,初始值为1
while (x <= 4) { // 循环条件
System.out.println("x = " + x); // 条件成立,打印x的值
if (x == 3) {
break;
}
x++; // x进行自增
}
}
}
在上述带代码中,通过while循环打印x的值,当x的值为3时使用break语句跳出循环。因此打印结果中并没有出现“x=4”。
6.2 标记
当break语句出现在嵌套循环中的内层循环时,它只能跳出内层循环,如果想使用break语句跳出外层循环则需要对外层循环添加标记。
public class BreakDemo02 {
public static void main(String[] args) {
int i, j; // 定义两个循环变量
itcast: for (i = 1; i <= 9; i++) { // 外层循环
for (j = 1; j <= i; j++) { // 内层循环
if (i > 4) { // 判断i的值是否大于4
break itcast; // 跳出外层循环
}
System.out.print("*"); // 打印*
}
System.out.print("\n"); // 换行
}
}
}
在外层for循环前面增加了标记“itcast”。当i>4时,使用break itcast;语句跳出外层循环。因此程序只打印了4行“*”。
6.3 continue语句
continue语句用在循环语句中,它的作用是终止本次循环,执行下一次循环。
实例:对1~100之内的奇数求和
public class ContinueDemo {
public static void main(String[] args) {
int sum = 0; // 定义变量sum,用于记住和
for (int i = 1; i <= 100; i++) {
if (i % 2 == 0) { // i是一个偶数,不累加
continue; // 结束本次循环
}
sum += i; // 实现sum和i的累加
}
System.out.println("sum = " + sum);
}
}
上述代码中,使用for循环让变量i的值在1~100之间循环,在循环过程中,当i的值为偶数时,将执行continue语句结束本次循环,进入下一次循环。当i的值为奇数时,sum和i进行累加,最终得到1~100之间所有奇数的和,打印“sum = 2500”。
在嵌套循环语句中,continue语句后面也可以通过使用标记的方式结束本次外层循环,用法与break语句相似
总结:
1.循环语句 while
格式:
初始化表达式;
while(条件表达式){
语句体;
控制条件表达式;
}
执行流程;
1,初始化表达式;
2,条件表达式
如果结果为true, 执行语句体
如果结果为flase, 循环结束
3, 当语句体执行后, 执行控制条件表达式
4,接下来,回到第二步, 直到条件表达式为false 循环结束跳转语句(break、continue)
2.循环语句 do...while
格式:
初始化表达式;
do {
语句体;
控制条件表达式;
} while (条件表达式);
执行流程:
1,初始化表达式;
2, 执行语句体
3, 执行控制条件表达式
4, 执行条件表达式,
如果结果为true, 继续执行语句体
如果结果为false, 循环结束
3.跳转控制语句
break; 跳出本层循环
continue; 结束本次循环