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个 ...
随机推荐
- 【EfF】 贪婪加载和延迟加载 (virtual去掉关闭延迟加载)
EntityFramework(EF)贪婪加载和延迟加载的选择和使用 贪婪加载:顾名思议就是把所有要加载的东西一 次性读取 1 using (var context = new MyDbContext ...
- NSLocale 本地化信息
前言 NSLocale 类返回本地化信息,主要体现在"语言"和"区域格式"这两个设置项. 1.NSLocale 本地化信息的创建 // 用标示符创建 NSLoc ...
- NSValue 值
前言 将任意数据类型包装成 OC 对象 1.比较两个 NSValue 类型数据的大小 NSValue *value1 = [NSValue valueWithPoint:NSMakePoint(10, ...
- ubuntu安装nginx与配置
命令行安装:(当前时间为2018.11,版本为1.10.3) sudo apt-get install nginx 安装好的文件位置: /usr/sbin/nginx:主程序 /etc/nginx:存 ...
- TypeScript入门-类
▓▓▓▓▓▓ 大致介绍 在ECMASript6中引入了类这一概念,通过class声明一个类.对于学习过C和C++的人应该不会陌生 ▓▓▓▓▓▓ 类 看一个简单的类: class Greeter { g ...
- bootstrap的其他
情境文本颜色 <p class="text-muted">...</p> <p class="text-primary">. ...
- window 7/8/10 安装nginx
1.百度 nginx 找到 http://nginx.org/ 官网 2.找到一个nginx 版本 如 最新版本 2018-12-25 nginx-1.15.8 mainline v ...
- Python中lambda表达式
一.lambda表达式形式 lambda后面跟一个或多个参数,紧跟一个冒号,以后是一个表达式.冒号前是参数,冒号后是返回值. lambda是一个表达式而不是一个语句. lambda表达式可以出现在Py ...
- C++_类和动态内存分配5-使用指向对象的指针
再探new和delete new为创建的每一个对象的名称字符串分配存储空间,这是在构造函数中进行的: 析构函数使用delete来释放这些内存. 字符串是一个字符数组,所以析构函数使用的是带中括号的de ...
- paraview添加vector
https://youtu.be/cygVdhn-kG0 (须自行FQ)