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个 ...
随机推荐
- 端口以及服务常用cmd
netstat -ano 列出所有端口的情况 netstat -aon|findstr "49157" 查出特定端口的情况 ...
- android android各种应用的许可
android各种应用的许可 在Android的设计中,资源的访问或者网络连接,要得到这些服务都需要声明其访问权限,否则将无法正常工作.在Android中这样的权限有很多种,这里将各类访问权限一一罗列 ...
- ecliplse里tomcat正常启动后http://localhost:8080/报错404
如下图所示,新建一个工作区间,添加tomcat之后通过ecliplse启动tomcat之后: 访问http://localhost:8080/出现404: 解决方法: 1.确保tomcat里面所有项目 ...
- 649. Dota2 Senate
In the world of Dota2, there are two parties: the Radiant and the Dire. The Dota2 senate consists of ...
- BST_insert
#include <stdio.h> /* printf, scanf, NULL */ #include <stdlib.h> /* malloc, free */ stru ...
- python3好用的mysql.connector库
python3好用的mysql.connector库 from mysql.connector import connect #建立mysql连接,生成一个mysql.connector对象 conn ...
- shell和python之间的参数传递
我们在使用shell调用其他语言的程序的时候,希望能够便捷的从shell中输入参数,然后由目标程序接收参数并运行,这样就省去了每次需要在原程序进行修改带来的麻烦,这里介绍一下如何从shell中 ...
- kali linux之DNS,NTP放大攻击
DNS放大: 产生大流量的攻击方法-----单机的带宽优势,巨大的单机数量形成的流量汇聚,利用协议特性实现放大效果的流量 DNS协议放大效果----查询请求流量小,但响应流量可能非常巨大(dig AN ...
- centos7用docker安装kafka
参考之前的文章安装zookeeper集群 https://www.cnblogs.com/xiaohanlin/p/10124674.html 如果是测试环境也可以简单安装单节点的zookeeper ...
- spark-2.2.1在centos7安装
前言 在安装Spark之前,我们需要安装Scala语言的支持.在此我选择的是scala-2.11.12版本.jdk8也要保证已经安装好并且配置好环境变量 scala-2.11.12下载 为了方便,我先 ...