Java入门系列-09-循环结构
这篇文章为你搞懂5个问题
- while 循环如何使用
- do-while 循环的使用
- for 循环的使用
- break、continue 的使用
- 循环结构的嵌套使用
生活中有很多事情需要我们重复的去做,比如围着操场跑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-循环结构的更多相关文章
- Java入门系列-08-选择结构
这篇文章为你搞懂2个问题 if-else选择结构的使用? switch 的使用? 前面我们学习的代码都是直上直下的执行,还不会"拐弯",这篇文章带大家来看一下会"拐弯&q ...
- 047 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 09 嵌套while循环应用
047 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 09 嵌套while循环应用 本文知识点:嵌套while循环应用 什么是循环嵌套? 什么是循环嵌套? ...
- 053 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 15 流程控制知识总结
053 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 15 流程控制知识总结 本文知识点: 流程控制知识总结 流程控制知识总结 选择结构语句 循环结构语句 ...
- 052 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 14 Eclipse下程序调试——debug2 多断点调试程序
052 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 14 Eclipse下程序调试--debug2 多断点调试程序 本文知识点: Eclipse下程序调 ...
- 051 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 13 Eclipse下程序调试——debug入门1
051 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 13 Eclipse下程序调试--debug入门1 本文知识点: 程序调试--debug入门1 程序 ...
- 050 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 12 continue语句
050 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 12 continue语句 本文知识点:continue语句 continue语句 continue ...
- 049 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 11 break语句
049 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 11 break语句 本文知识点:break语句 break语句 break语句前情回顾 1.swi ...
- 048 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 10 案例——阶乘的累加和
048 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 10 案例--阶乘的累加和 本文知识点:通过案例练习嵌套循环应用 案例练习--阶乘的累加和 案例题目 ...
- 046 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 08 for循环的注意事项
046 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 08 for循环的注意事项 本文知识点:for循环的注意事项 for循环的注意事项 for循环有3个 ...
随机推荐
- MVPArms MVP快速集成框架
前言 今年的Android技术圈中MVP,Dagger2,Rxjava,Retrofit这些词汇非常火,随便打开一个技术论坛都充斥着大量的关于这些技术的文章,Github也充斥着各种以基于MVP+Re ...
- RealSense R400系列深度相机的图像获取保存和格式转换
关于RealSense的基础使用的博文用的库有点混杂,挺多博文都是早期maneger的那个库,对那个不是很了解,主要记录一下使用最新的函数库的基础使用. 相机型号:RealSense R435 使用函 ...
- 趣图:快下班了,剩一个bug,修复一下再走
趣图:当我给老板展示我修复了那个 bug 时 趣图:当我以为这是最后一个Bug时……
- Servlet中Web.xml配置详解(二)
5.2 分配JSP初始化参数给JSP页面提供初始化参数在三个方面不同于给servlet提供初始化参数.1)使用jsp-file而不是servlet-class.因此,WEB-INF/web.xml文件 ...
- 《Andrew Ng深度学习》笔记2
神经网络基础 1.图计算 计算时有两种方法:正向传播和反向传播.正向传播是从底层到顶层的计算过程,逐步推出所求公式.反向传播是从顶层到底层,从已知的式子求出因变量的影响关系. 在这里用到的反向传播算法 ...
- springboot整合activemq加入会签,自动重发机制,持久化
消费者客户端成功接收一条消息的标志是:这条消息被签收. 消费者客户端成功接收一条消息一般包括三个阶段: 1.消费者接收消息,也即从MessageConsumer的receive方法返 ...
- JavaWeb学习笔记(四)—— response
一.response概述 response是Servlet.service方法的一个参数,类型为javax.servlet.http.HttpServletResponse.在客户端发出每个请求时,服 ...
- day--41 mysql索引原理与慢查询优化
mysql索引原理与慢查询优化一:什么是索引 01:索引的出现是为了提高查询数据的效率 02:索引在mysql叫做“键” 或则“key“(primary key,uniquekey ,还有一个inde ...
- Android ToggleButton(开关函数)与switch (开关按钮)
1.ToggleButton (1)介绍 (2)组件形状 (3)xml文件设置 <?xml version="1.0" encoding="utf-8"? ...
- stiff chemistry模型出现NaN错误
通过定位可以看到,是usr_rates.f中出现了奇异值,因为我的代码中有这样一句话: 而同时我的ConH2在声明后没有赋初值,因此,当X_g(IJK,H2) < c_Limiter后,ConH ...