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,在系统引导过程中启动的进程 ...
随机推荐
- 记一次由sql注入到拿下域控的渗透测试实战演练(下)
本次渗透使用工具: mimikatz,PsExec 本次渗透网络拓扑图: 开始渗透: 上一篇文章中我们讲到我们成功渗透了目标内网中web服务器并提取其管理员明文密码,通过明文密码又成功登陆了内网中的另 ...
- 掌握数位dp
最近遇到了数位dp题目,于是就屁颠屁颠的跑过来学习数位dp了~ "在信息学竞赛中,有这样一类问题:求给定区间中,满足给定条件的某个D 进制数或此类数的数量.所求的限定条件往往与数位有关,例如 ...
- C++11 Java基本数据类型以及转换
写在前面: 母语是Java,后来学了C++11,这两个语言的基本数据类型隐式转换不太一样,有点晕,整理一下 整理自网络和书籍,标明出处 C++ 基本数据类型 --http://www.cnblogs. ...
- Codeforces Round #654 (Div. 2) C. A Cookie for You (思维)
题意:有\(a\)个蛋糕,\(b\)个巧克力,第一类人有\(n\)个,总是吃多的东西(若\(a>b\),吃蛋糕,否则吃巧克力),第二类人有\(m\)个,总是吃少的,可以随便调整这两类人吃的顺序, ...
- rabbitmq学习二
rabbitmq的六种工作模式: 这里简单介绍下六种工作模式的主要特点: 简单模式:一个生产者,一个消费者 work模式:一个生产者,多个消费者,每个消费者获取到的消息唯一. 订阅模式:一个生产者发送 ...
- PHP的常用函数 持续更新
PHP的常用函数 前言: 由于害怕遗忘,故在此记录下常用的php函数,以便复习 1 define函数 作用:定义常量 用法 <?php define('a',100); ?> 2 intv ...
- C++动态申请一维数组和二维数组
在平时的编程过程中,我们经常会用到数组来存放数据,我们可以直接申请足够大空间的数组来保证数组访问不会越界,但是即便这样,我们依然不能保证空间分配的足够,而且非常的浪费空间.有时候我们需要根据上面得到的 ...
- 北京网络赛G BOXES 大模拟+BFS
题目描述 Description There is a strange storehouse in PKU. In this storehouse there are n slots for boxe ...
- Redis 集合统计(HyperLogLog)
统计功能是一类极为常见的需求,比如下面这个场景: 为了决定某个功能是否在下个迭代版本中保留,产品会要求统计页面在上新前后的 UV 作为决策依据. 简单来说就是统计一天内,某个页面的访问用户量,如果相同 ...
- 读写 LED 作业 台灯的 频闪研究1
读写 LED 作业 台灯的 频闪研究: 核心提示: 随着科技的持续发展,目前已经商业化的照明产品从第一代的白炽灯: 第二代的荧光灯.卤灯: 第三代的高强度气体放电灯; 以及当下主流的, 第四代的发光二 ...