这篇文章为你搞懂5个问题

  1. while 循环如何使用
  2. do-while 循环的使用
  3. for 循环的使用
  4. break、continue 的使用
  5. 循环结构的嵌套使用

生活中有很多事情需要我们重复的去做,比如围着操场跑10圈,比如写了个爬虫需要爬取20个页面,这些都是循环。

while 循环

while 循环是一个先判断后执行的循环,由循环条件循环操作组成。

语法:

while(循环条件){
循环操作
}

敲一敲:

public class DemoWhile {
public static void main(String[] args) {
int i=0;//定义一个变量
while(i<10) {//循环条件
System.out.println(i);
i++;//更新条件
}
}
}

循环条件为 true 时执行循环操作,为 false 时不执行

上面的代码中的循环条件是i小于10,由于i最开始时为0所以比较结果为true,进入循环,在循环操作中修改变量的值,使条件不断更新,防止死循环,当i的值为10的时,循环条件为 false,这时候循环就结束了。

敲一敲:

/**
* 计算 1-100的和
* @author Jack
*
*/
public class DemoSum {
public static void main(String[] args) {
int sum=0;//定义保存和的变量
int i=1;//要更新的数字
while(i<=100) {//循环1-100
sum+=i;//累加
i++;//更新数字
}
System.out.println("1-100的和:"+sum);
}
}

敲一敲:

import java.util.Scanner;

/**
* 输入y打招呼,输入n结束
* @author Jack
*
*/
public class DemoWhileInput {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("输入y打招呼,输入n结束");
char choose=input.next().charAt(0);
while('y'==choose) {//char类型的比较使用 ==
System.out.println("hello");
System.out.println("输入y打招呼,输入n结束");
choose=input.next().charAt(0);
}
System.out.println("循环结束");
}
}

do-while循环

do-while循环执行的特点是先执行后判断,先执行 do 代码块中的代码,循环条件为 true时继续执行 do 代码块,为 false 时结束循环。

语法:

do{
循环操作
}while(循环条件);

敲一敲:

public class DemoDoWhileSum {
public static void main(String[] args) {
int sum=0;//用于保存求和后的值
int i=1;
do {
sum+=i;
i++;
} while (i<=100);
System.out.println("1-100的和为:"+sum);
}
}

上面 while 循环中的打招呼的代码改用 do-while 更合适,下面的代码会先打招呼,然后询问是否继续,输入y将继续

敲一敲:

import java.util.Scanner;

public class DemoDoWhile {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
char choose=' ';
do {
System.out.println("hello");
System.out.println("输入y继续打招呼,输入n结束");
choose=input.next().charAt(0);
}while(choose=='y');
System.out.println("循环结束");
}
}

for 循环

对于固定次数的循环,使用 for 将更加简洁

语法:

for(参数初始化;条件判断;更新循环变量){
循环操作
}

1.先执行参数初始化

2.然后进行条件判断,如果为 true 执行第3步,为 false 将结束循环

3.执行循环操作

4.更新循环变量,然后再次进入第2步进行条件判断

敲一敲:

public class DemoFor {
public static void main(String[] args) {
//打印1-100的数
for(int i=1;i<=100;i++) {
System.out.println(i);
}
}
}

参数初始化和更新变量可以同时操作多个变量,像 i++,j-- 这样用 , 隔开

import java.util.Scanner;

public class DemoAddTable {
public static void main(String[] args) {
System.out.println("请输入一个值:");
Scanner input=new Scanner(System.in);
int val=input.nextInt();
for(int i=0,j=val;i<=val;i++,j--) {
System.out.println(i+" + "+j+"="+(i+j));
}
}
}

在 for 循环中两个 ; 不能省略

如果省略循环条件将造成死循环

参数初始化可以省略,但要放在循环的上面,保证变量的可用

更新循环变量可以省略,但要放在循环里面,保证变量的更新不会导致死循环

break 和 continue

break:改变程序控制流程,用于 do-while、while、for、switch,跳出结构执行结构后面的语句。

敲一敲:

import java.util.Scanner;

public class DemoBreak {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
while(true) {
System.out.println("是否继续游戏?输入任意继续,输入no结束:");
String goon=input.next();
if ("no".equals(goon)) {//字符串之间的比较使用 equals
break;
}
}
System.out.println("结束");
}
}

这里的循环条件为 true,也就是一个死循环,但在循环过程中如果输入 no 将执行 break ,那么这个循环也就结束了。

continue:只能用在循环中,跳过循环体中剩余的语句而执行下一次循环。

敲一敲:

import java.util.Scanner;

/**
* 统计年龄大于16的人数
* @author Jack
*
*/
public class DemoContinue {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入学员数量:");
int pnum=input.nextInt();//学员总人数
int num=0;//保存年龄大于16的人数
for(int i=1;i<=pnum;i++) {
System.out.println("请输入第 "+i+" 位学员的年龄:");
int age=input.nextInt();
if (age<17) {
continue;//跳过后面代码,继续下一次循环
}
num++;
}
System.out.println("年龄大于16的人数:"+num);
}
}

循环嵌套

嵌套循环的特点:外层循环执行一次,内层循环执行一遍,各种循环可以任意嵌套,下面使用 for 循环演示打印矩形。

语法:

while(……){
for(……;……;……){ }
} do{
while(……){ }
}while(……); for(……;……;……){
do{ }while(……);
} ……

敲一敲:

import java.util.Scanner;

public class DemoRectangle {

	public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("输入要打印的行数:");
int line=input.nextInt();//行数
System.out.println("输入要打印的列数:");
int column=input.nextInt();
//外层循环控制行数,内层循环控制列数
for (int i = 1; i <= line; i++) {
for (int j = 1; j <= column; j++) {
System.out.print("* ");//不换行打印
}
//打印完所有的列后换行
System.out.println();
} }
}

敲一敲:

/**
* 打印一个三角形
* @author Jack
*
*/
public class DemoDelta {
public static void main(String[] args) {
for(int i=1;i<=5;i++) {//外层循环控制行
for (int j = 1; j <= i; j++) {//内层循环控制列的条件
System.out.print("* ");
}
System.out.println();
}
}
}

打印一个5行的三角形,外层的循环控制行数,所以条件是 i<=5 。列和行的条件是什么?第一行1个,第二行2个,第三行3个*,所以条件为 j<=i

试一试

1.使用嵌套循环打印倒三角形

2.使用嵌套循环打印99乘法表

1*1=1
1*2=2 2*2=4
……
1*8=8 2*8=16 ……
1*9=9 2*9=18 …… 9*9=81

鼓励你在留言中发布自己的答案,与其他人一起交流,并在百度上搜索相关问题

扫码关注"享智同行"回复"009"获取答案和解析

Java入门系列-09-循环结构的更多相关文章

  1. Java入门系列-08-选择结构

    这篇文章为你搞懂2个问题 if-else选择结构的使用? switch 的使用? 前面我们学习的代码都是直上直下的执行,还不会"拐弯",这篇文章带大家来看一下会"拐弯&q ...

  2. 047 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 09 嵌套while循环应用

    047 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 09 嵌套while循环应用 本文知识点:嵌套while循环应用 什么是循环嵌套? 什么是循环嵌套? ...

  3. 053 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 15 流程控制知识总结

    053 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 15 流程控制知识总结 本文知识点: 流程控制知识总结 流程控制知识总结 选择结构语句 循环结构语句 ...

  4. 052 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 14 Eclipse下程序调试——debug2 多断点调试程序

    052 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 14 Eclipse下程序调试--debug2 多断点调试程序 本文知识点: Eclipse下程序调 ...

  5. 051 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 13 Eclipse下程序调试——debug入门1

    051 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 13 Eclipse下程序调试--debug入门1 本文知识点: 程序调试--debug入门1 程序 ...

  6. 050 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 12 continue语句

    050 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 12 continue语句 本文知识点:continue语句 continue语句 continue ...

  7. 049 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 11 break语句

    049 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 11 break语句 本文知识点:break语句 break语句 break语句前情回顾 1.swi ...

  8. 048 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 10 案例——阶乘的累加和

    048 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 10 案例--阶乘的累加和 本文知识点:通过案例练习嵌套循环应用 案例练习--阶乘的累加和 案例题目 ...

  9. 046 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 08 for循环的注意事项

    046 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 08 for循环的注意事项 本文知识点:for循环的注意事项 for循环的注意事项 for循环有3个 ...

随机推荐

  1. C# 抽象

    好多人将抽象类也作为多态的一种,其实我觉得并不是特别的好. 抽象在C#中是类的一种表现. 如果将类作为多态,那么前面所有的东西不就白费了吗? C#的 抽象很简单. 那就是抽象. 基本就是高度抽象. 那 ...

  2. python-webdriver库之Keys

    在使用webdriver时,有些时候我们需要做一些键盘上特殊键的操作,例如backspace,ctrl,shift等,这个时候就需要用到webdriver.common.keys.Keys方法来进行 ...

  3. 洛谷P4495 [HAOI2018]奇怪的背包(数论)

    题面 传送门 题解 好神仙的思路啊--orzyyb 因为不限次数,所以一个体积为\(V_i\)的物品可以表示出所有重量为\(\gcd(V_i,P)\)的倍数的物品,而所有物品的总和就是这些所有的\(\ ...

  4. Xamarin Forms:小马过河,王者归来

    因为我媳妇的原因,去年下半年从零开始学习Android原生开发,做了一个答题库app.整体给我的感觉是入门难度不大,前期折腾一番,大部分时间都是花在开发上面,其实任何一门语言都是如此. 今年我又有另一 ...

  5. Leetcode 931. Minimum falling path sum 最小下降路径和(动态规划)

    Leetcode 931. Minimum falling path sum 最小下降路径和(动态规划) 题目描述 已知一个正方形二维数组A,我们想找到一条最小下降路径的和 所谓下降路径是指,从一行到 ...

  6. SDUT OJ 数据结构实验之图论六:村村通公路(最小生成树)

    数据结构实验之图论六:村村通公路 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descri ...

  7. C# 委托的三种调用示例(同步调用、异步调用、异步回调)

    首先,通过代码定义一个委托和下面三个示例将要调用的方法: 代码如下: public delegate int AddHandler(int a,int b); public class 加法类 { p ...

  8. 如何在SQLServer中处理每天四亿三千万记录的(数据库大数据处理)

    首先声明,我只是个程序员,不是专业的DBA,以下这篇文章是从一个问题的解决过程去写的,而不是一开始就给大家一个正确的结果,如果文中有不对的地方,请各位数据库大牛给予指正,以便我能够更好的处理此次业务. ...

  9. vue is detected

    Vue.js is detected on this page. Devtools inspection is not available because it's in production mod ...

  10. C++_IO与文件5-文件的输入与输出

    大多数计算机程序都使用了文件.文件本身是存储在某种设备上的一系列字节. 通常,操作系统管理文件,跟踪它们的位置.大小.创建时间等. 除非在操作系统级别上编程,否则通常不必担心这些事情. 真正需要的是将 ...