while、do...while和for循环
一、循环
1.1 定义
- 当满足一定条件的时候,重复执行某一段代码的操作
- while和for和do...while是java中的循环
二、while循环
2.1 定义
int i = 0; 初始化值
while(i<10){ 循环判断
循环体 循环重复执行的代码
循环控制语句
}
class Demo01 {
public static void main(String[] args) {
int i = 0;
while(i < 10){
System.out.println("Hello World!" + i);
i++;
}
System.out.println("OVER!");
}
}
2.2 详解while循环
- 初始化条件语句
- 定义一个初始化的变量
- 只执行一次
- 循环判断条件语句
- 执行的次数比循环体多一次
- 决定循环能不能执行的一个语句
- 循环体
- 被重复执行的代码
- 循环真正的功能体现
- 循环控制语句
- 控制循环条件的变化
- 如果没有这个可能会造成死循环
2.3 while案例01--计算0--num累加的结果
class Demo02 {
public static void main(String[] args) {
// 计算0--num累加的结果
int i = 0;
int sum = 0;
while(i <= 100){ // 表示累加到100
sum = sum + i;
// 控制i自增
i++;
}
System.out.println("sum = " + sum);
}
}
2.4 计算1--100奇数累加
class Demo03 {
public static void main(String[] args) {
// 计算0--100奇数累加的结果
// 循环初始化
int i = 0;
// 记录结果
int sum = 0;
// 开启while循环
while(i <= 100){
// 执行累加
if(i % 2 != 0){
sum += i;
}
// 控制循环变化
i++;
}
System.out.println("sum = " + sum);
System.out.println("============");
// 循环初始化
int j = 1;
// 记录结果
sum = 0;
// 开启循环,到100结束
while(j <= 100){
// 执行累加
sum += j;
// 控制循环变化
j += 2;
}
System.out.println("sum = " + sum);
}
}
2.5 输出水仙花数
class Demo04 {
public static void main(String[] args) {
/*
输出所有的水仙花数字
1、确定初始化值
100
2、开启循环,确定结束条件
999
3、计算得出水仙花数并输出
获取数字的各位字面值
计算字面值的立方和
比较立方和是否等于数字本身
*/
int i = 100;
while(i <= 999){
// 获取个位十位百位数字 123
int ge = i % 10;
int shi = i / 10 % 10;
int bai = i / 100;
// 计算立方和
int sum = ge*ge*ge + shi*shi*shi +bai*bai*bai;
// 比较、判断
if(sum == i){
System.out.println("水仙花数:" + i);
}
// 控制循环判断变化
i++;
}
}
}
2.6 输出英文字母
class Demo05 {
public static void main(String[] args) {
/*
7、输出小写的 a-z 以及大写的Z—A
97--122 65--90
8、求出1-1/2+1/3-1/4…..1/100的和
9、输出20-80之间能被3整除的整数,每5个一行
10、打印出1000-2000年中所有的闰年,并以每行四个数的形式输出
*/
int i = 97;
while(i <= 122){
System.out.println((char)i);
i++;
}
System.out.println("Hello World!");
int j = 90;
while(j >= 65){
System.out.println((char)j);
j--;
}
}
}
2.7 输出3的倍数,5个一行
class Demo06 {
public static void main(String[] args) {
// 9、输出20-80之间能被3整除的整数,每5个一行
int i = 20;
// 定义计数器
int count = 0;
while(i <= 80){
// 判断i是否能被3整除
if(i % 3 == 0){
System.out.print(i + "\t");
// 没找到一个符合条件的计数器就加1
count++;
// 怎么确定一行就是5个了---看计数器是不是5的倍数
if(count % 5 == 0){
System.out.print("\n");
}
}
i++;
}
}
}
猴子吃桃
class Demo09 {
public static void main(String[] args) {
/*
猴子摘了很多桃子
每天吃桃子半数,感觉不过瘾有多吃了一个
到第十天的时候发现还剩下一个
问:猴子第一天摘了多少桃子
*/
int i = 10;
int count = 1;
while(i > 0){
count = (count+1)*2;
i--;
}
System.out.println("猴子第一天摘了"+count+"桃子");
}
}
2.8 while循环的特殊情况
- 死循环
- 循环判断条件返回结果一直是true
class Demo07 {
public static void main(String[] args) {
/*
while(true){
System.out.println("Hello World!");
}
*/
int i = 0;
while(i >= 0){
System.out.println("Hello World!");
i++;
}
}
}
- 一次都没有执行
- 第一次进入循环判断的时候,返回的结果是false
class Demo07 {
public static void main(String[] args) {
/*
while(true){
System.out.println("Hello World!");
}
*/
int i = 0;
while(i > 0){
System.out.println("Hello World!");
i++;
}
System.out.println("OVER!");
}
}
三、do...while
3.1 定义
- java中循环的一种
- 和while极度相似
- 循环开始后先执行do后面的代码--第一次执行不用经过循环条件判断
- 第一次执行结束后在判断下一次能否执行
3.2 案例
class Demo08 {
public static void main(String[] args) {
int i = 0;
// 先执行do后面的代码----这部分代码和while循环后面的代码书写方式、意义是相同的
do{
// 循环重复执行的代码
System.out.println("Hello World!");
// 条件控制语句
i++;
// 条件判断
}while(i > 0);
System.out.println("OVER!");
}
}
四、for循环
4.1 定义
- java中的一种循环
- 能完成遍历、迭代的操作
- 功能和while基本一样
4.2 语法
for(初始化语句; 循环条件判断语句; 训话条件控制语句){
循环体
}
class Demo10 {
public static void main(String[] args) {
// 使用for循环输出10遍HelloWorld
for(int i = 0;i < 10;i++){
System.out.println("Hello World!" + i);
}
System.out.println("OVER!");
}
}
4.3 for循环详解
for(int i = 0;i < 5;i++){
System.out.println("Hello World!" + i);
}
System.out.println("OVER!");
执行过程
第一次
初始化变量int i = 0,判断i < 5,判断结果true,执行for循环中的循环体
第二次
执行循环条件控制代码i++,i变成1,判断i < 5,判断结果true,执行for循环中的循环体
第三次
执行循环条件控制代码i++,i变成2,判断i < 5,判断结果true,执行for循环中的循环体
第四次
执行循环条件控制代码i++,i变成3,判断i < 5,判断结果true,执行for循环中的循环体
第五次
执行循环条件控制代码i++,i变成4,判断i < 5,判断结果true,执行for循环中的循环体
第六次
执行循环条件控制代码i++,i变成5,判断i < 5,判断结果false,不执行for循环中的循环体,循环结束
4.4 for循环计算累加的结果
class Demo11 {
public static void main(String[] args) {
// 计算0--100累加的结果
int sum = 0;
for(int i = 0;i<=100;i++){
sum += i;
}
System.out.println("Hello World!" + sum);
// 计算0--100奇数累加的结果
sum = 0;
for(int i = 0;i<=100;i++){
// 找出奇数进行累加
if(i % 2 != 0){
sum += i;
}
}
System.out.println("Hello World!" + sum);
sum = 0;
for(int i = 1;i <= 100;i += 2){
// 找出奇数进行累加
sum += i;
}
System.out.println("Hello World!" + sum);
}
}
4.5 输出闰年
class Demo12 {
public static void main(String[] args) {
// 输出1000-2000年之间的闰年,4个一行
int count = 0;
for(int i = 1000;i <= 2000;i++){
// 计算闰年
/*
普通闰年:公历年份是4的倍数的,且不是100的倍数,为普通闰年。(如2004、2020年就是闰年);
世纪闰年:公历年份是整百数的,必须是400的倍数才是世纪闰年(如1900年不是世纪闰年,2000年是世纪闰年);
*/
if(((i%4==0) && (i%100!=0)) || (i%400==0)){
System.out.print(i + "\t");
// 计数器加一
count++;
// 判断是不是到了4
if(count % 4 == 0){
System.out.println();
}
}
}
System.out.println("Hello World!");
}
}
4.6 输出水仙花数
class Demo13 {
public static void main(String[] args) {
// for循环输出水仙花数
for(int i = 100;i < 1000;i++){
// 计算水仙花数字
// 获取个位十位百位
int ge = i % 10;
int shi = i / 10 % 10;
int bai = i / 100;
int sum = ge*ge*ge + shi*shi*shi + bai*bai*bai;
// 判断sum和i是否相等
if(sum == i){
System.out.println(i);
}
}
System.out.println("Hello World!");
}
}
4.7 for循环计算阶乘
import java.util.Scanner;
class Demo14 {
public static void main(String[] args) {
// 键盘录入一个数字,计算它的阶乘
/*
1、导入Scanner
2、创建Scanner对象
3、提示输入一个数字
4、获取输入的数字
5、编写循环,从1开始,到num结束
6、在循环中不断计算乘积
7、循环结束后输出结果
*/
Scanner in = new Scanner(System.in);
System.out.println("你想计算到几的阶乘?");
int num = in.nextInt();
int mul = 1;
// 开启循环
for(int i = 1;i <= num;i++){
mul *= i;
}
System.out.println("num阶乘的结果是:" + mul);
}
}
4.8 统计学生平均分
import java.util.Scanner;
class Demo15 {
public static void main(String[] args) {
// 输入五个同学的分数,计算平均分
/*
1、导入Scanner
2、创建Scanner对象
3、开启循环,执行5次
a、提示输入第一个同学的分数
b、获取第一个同学的分数
c、累加这个分数
4、在循环外计算平均分
5、输出平均分数
*/
Scanner in = new Scanner(System.in);
// 记录总分数
int scores = 0;
for(int i = 0;i < 5;i++){
System.out.println("请输入第" + (i+1) + "个同学的分数:");
int score = in.nextInt();
scores += score;
}
// 计算平均分
System.out.println("五个同学的平均分数:" + (scores/5.0));
}
}
五、循环中流程控制
5.1 break
终止循环的执行
class Demo16 {
public static void main(String[] args) {
// break的使用
int i = 0;
while(i <= 100){
System.out.println("Hello World!" + i);
// 在执行到i==66的时候停止运行
if(i == 66){
// 使用break终止循环的执行
break;
}
i++;
}
System.out.println("Hello World!");
}
}
5.2 continue
- 跳过本轮循环后面的内容,进入到下一轮循环的执行
class Demo17 {
public static void main(String[] args) {
// continue
int i = 1;
while(i <= 20){
// 输出所有的奇数
if(i % 2 != 0){
System.out.println(i);
}
i++;
}
System.out.println("Hello World!001");
i = 1;
while(i <= 20){
System.out.println(i);
i += 2;
}
System.out.println("Hello World!002");
i = 0;
while(i <= 20){
// 判断:如果是偶数,下面的内容就跳过
i++;
if(i % 2 == 0){
continue;
}
System.out.println(i);
}
System.out.println("Hello World!003");
}
}
六、常量
- 字面值常量
- 比如1 、2 、 3
- 比如"hello" "world"
- 比如'a' 'b'
- 自定义常量
- 在生产过程中需要定义一些不能被改变的数值
- 主机地址
- 数据库连接时候用到的用户名和密码
- 端口号
- 定义的方式
- 所有的字母大写,多个字母使用下划线连接
- 在生产过程中需要定义一些不能被改变的数值
七、关键字
- java关键字是被java语言赋予了特殊含义的标识符
- class void public static while if else for switch case default break continue....
while、do...while和for循环的更多相关文章
- 【.net 深呼吸】细说CodeDom(8):分支与循环
有人会问,为啥 CodeDom 不会生成 switch 语句,为啥没生成 while 语句之类.要注意,CodeDom只关心代码逻辑,而不是语法,语法是给写代码的人用的.如果用.net的“反编译”工具 ...
- Recurrent Neural Network系列1--RNN(循环神经网络)概述
作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...
- Python学习--04条件控制与循环结构
Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...
- 模仿Linux内核kfifo实现的循环缓存
想实现个循环缓冲区(Circular Buffer),搜了些资料多数是基于循环队列的实现方式.使用一个变量存放缓冲区中的数据长度或者空出来一个空间来判断缓冲区是否满了.偶然间看到分析Linux内核的循 ...
- 【JS基础】循环
for 循环的语法: for (语句 1; 语句 2; 语句 3) { 被执行的代码块 } 语句 1 在循环(代码块)开始前执行 语句 2 定义运行循环(代码块)的条件 语句 3 在循环(代码块)已被 ...
- 【python之路4】循环语句之while
1.while 循环语句 #!/usr/bin/env python # -*- coding:utf-8 -*- import time bol = True while bol: print '1 ...
- To Java程序员:切勿用普通for循环遍历LinkedList
ArrayList与LinkedList的普通for循环遍历 对于大部分Java程序员朋友们来说,可能平时使用得最多的List就是ArrayList,对于ArrayList的遍历,一般用如下写法: p ...
- JavaScript单线程和浏览器事件循环简述
JavaScript单线程 在上篇博客<Promise的前世今生和妙用技巧>的开篇中,我们曾简述了JavaScript的单线程机制和浏览器的事件模型.应很多网友的回复,在这篇文章中将继续展 ...
- .NET基础 一步步 一幕幕[循环、逻辑语句块]
循环.逻辑语句块 好久不写博客了,断更了好几天了,从上周五到今天,从北京到上海,跨越了1213.0公里,从一个熟悉的城市到陌生的城市,还好本人适应力比较好,还有感谢小伙伴的接风咯,一切都不是事,好 ...
- Linux进程管理及while循环
目录 进程的相关概念 进程查看及管理工具的使用 Linux系统作业控制 调整进程优先级 网络客户端工具 bash之while循环 20.1.进程类型 守护进程 daemon,在系统引导过程中启动的进程 ...
随机推荐
- Codeforces Round #295 (Div. 2) B. Two Buttons (DP)
题意:有两个正整数\(n\)和\(m\),每次操作可以使\(n*=2\)或者\(n-=1\),问最少操作多少次使得\(n=m\). 题解:首先,若\(n\ge m\),直接输出\(n-m\),若\(2 ...
- 牛客练习赛70 A.重新排列 (,字符串思维)
题意:有一个模板串,给你\(T\)个字符串,选取最短的子串,使其重新排列后包含模板串,求最短的子串的长度 题解:遍历字符串,记录每个字符出现的最后位置,每记录一个后再遍历子串,找到子串需要的所有的字符 ...
- C#异步和多线程以及Thread、ThreadPool、Task区别和使用方法
本文的目的是为了让大家了解什么是异步?什么是多线程?如何实现多线程?对于当前C#当中三种实现多线程的方法如何实现和使用?什么情景下选用哪一技术更好? 第一部分主要介绍在C#中异步(async/awai ...
- 通过js正则表达式实例学习正则表达式基本语法
正则表达式又叫规则表达式,一般用来检查字符串中是否有与规则相匹配的子串,达到可以对匹配的子串进行提取.删除.替换等操作的目的.先了解有哪些方法可以使用正则对字符串来实现这些操作: RegExpObje ...
- ArcGIS处理栅格数据(二)
五.栅格数据的配准 1.有参考图层 ① 在ArcMap里面添加需要配准的栅格数据集和参考数据集. ② 在ArcMap里面添加"地理配准"工具条. 添加成功后如下图所示: ③ 将需要 ...
- 2.使用Helm构建ElasticSearch集群
作者 微信:tangy8080 电子邮箱:914661180@qq.com 更新时间:2019-05-24 16:08:53 星期五 欢迎您订阅和分享我的订阅号,订阅号内会不定期分享一些我自己学习过程 ...
- NIST随机数测试软件安装与使用 && igamc:UNDERFLOW
https://csrc.nist.gov/ https://csrc.nist.gov/projects/random-bit-generation/documentation-and-softwa ...
- Netty (一) IO 基础篇
Java IO 演进之路 1.1 必须明白的几个概念 1.1.1 阻塞(Block)和非阻塞(Non-Block) 阻塞和非阻塞是进程在访问数据的时候,数据是否准备就绪的一种处理方式,当数据没有准 ...
- favicon.ico All In One
favicon.ico All In One link rel="icon" type="image/x-icon" href="http://exa ...
- 知乎 bug
知乎 bug shit zhihu https://zhuanlan.zhihu.com/p/111809590 无法展开评论 https://unpkg.zhimg.com/@cfe/sentry- ...