2019年6月26日星期三
17时4分21秒
第10节循环结构-for-while-do…while
目录
1_1_10_09_循环结构_循环概述与基础 2
1_1_10_10_循环结构_for循环 2
1_1_10_11_循环结构_while循环 2
1_1_10_12_循环结构_do-while循环 2
1_1_10_13_练习_用循环求出1-100之 2
1_1_10_14_三种循环的区别 2
1_1_10_15_循环控制_break语句 2
1_1_10_16_循环控制_continue语句 2
1_1_10_17_死循环 2
1_1_10_18_循环嵌套 2
1_1_10_09_循环结构_循环概述与基础
1_1_10_10_循环结构_for循环
/*
循环结构的基本组成部分,一般可以分为四部分
1. 初始化语句: 在循环开始最初执行,而且只做唯一一次
2. 条件判断: 如果成立,则循环继续;如果不成立,则循环退出
3. 循环体: 重复要做的事情内容,若干行语句。
4. 步进语句: 每次循环之后都要进行的扫尾工作,每次循环结束之后都要执行一次
*/
public class Demo09For {
public static void main (String[] args) {
//输出一百遍 1、复制粘贴100遍 2、循环
/*
for (初始化语句;条件判断;步进语句) {
循环体
}
*/
for (int i=1; i <= 100; i++) {
System.out.println("我错了!" + i);
}
System.out.println("程序停止");
}
}
/*
while循环有一个标准格式,还有一个扩展格式。
标准格式:
while (条件判断) {
循环体
}
扩展格式:
初始化语句:
while (条件判断) {
循环体;
步进语句;
}
*/
public class Demo10While {
public static void main (String[] args) {
for (int i = 1; i <= 10; i++) {
System.out.println("我错了!" + i);
}
System.out.println("=================");
int i = 1; // 1. 初始化语句
while (i <= 10) { // 2. 条件判断
System.out.println("我错了!" + i); // 3. 循环体
i++; // 4. 步进语句
}
}
}
1_1_10_12_循环结构_do-while循环
/*
do-while循环的标准格式:
do {
循环体
} while (条件判断);
扩格式::
初始化语句
do {
循环体
步进语句
} while (条件判断);
特点: 至少执行一次
*/
public class Demo11DoWhile {
public static void main (String[] args) {
for (int i = 1; i <= 10; i++) {
System.out.println("原谅你了!起来吧!地上怪凉!" + i);
}
System.out.println("============================");
int i = 1; // 1. 初始化语句
do {
System.out.println("原谅你了!起来吧!地上怪凉!" + i); // 3. 循环体
i++; // 4. 步进语句
}while (i <= 10); // 2. 条件判断
}
}
1_1_10_13_练习_用循环求出1-100之间的偶数
/*
题目: 求出1-100之间的偶数和
思路:
1. 既然范围已经确定了是1和100之间,那么我就从1、2、3......一直到100这么多数字一个一个进行检查。
2. 总共有100个数字,并发所有数字都能用。必须要是偶数才能用,判断(if语句)偶数: num % 2 == 0
3. 需要一个变量,用来进行累加操作。也就好比是一个存钱罐
*/
public class Demo12HundredSum {
public static void main (String[] args) {
int sum = 0; // 用来累加的存钱罐
// for循环
for (int i = 1; i <= 100; i++) {
if (i % 2 == 0) { // 如果是偶数
sum += i;
}
}
System.out.println("for-价格是: " + sum);
// while循环
int i = 1; // 1. 初始化
while ( i <= 100 ) { // 2. 条件判断
if (i % 2 == 0) { // 如果是偶数
sum += i; // 3. 循环体
}
i++; // 4. 步进语句
}
System.out.println("while-价格是: " + sum);
// do...while
int di = 1;
do{
if (di % 2 == 0) { // 如果是偶数
sum += di; // 3. 循环体
}
di++;
}while( di <= 100 );
System.out.println("do...while-价格是: " + sum);
}
}
/*
三种循环的区别
1. 如果条件判断从来没有满足过,那么for循环和while循环将会执行0次,但是do-while循环至少一次。
2. for循环的变量在小括当中定义,只有循环内部才可以使用。
*/
public class Demo13LoopDifference {
public static void main(String[] args){
for(int i = 1; i < 0; i++){
System.out.println("Hello");
}
// System.out.println(i); // 这一行是错误写法!因为变量i定义在for循环小括内,只有for循环才能使用
System.out.println("=================");
int i = 1;
do{
System.out.println("World");
i++;
}while(i < 0);
// 现在已经超出了do-while循环的范围,我们仍然可以使用变量i
System.out.println(i); // 2
}
}
1_1_10_15_循环控制_break语句
/*
break关键字的用法有常见的两:
1. 可以用在switch语句当中,一旦执行,整个switch语句立结束。
2. 还可以用在循环语句当中,一旦执行,整个循环语句立结束。打断循环。
关于循环的的选择,有一个小建议
凡是次数确定的场景多用for循环;否则多用while循环
*/
public class Demo14Break{
public static void main(String[] args){
for (int i = 1; i <= 10; i++){
// 如果希望从第四次开始,后续全都不要了,就要打断循环
if(i == 4){ // 如果当前是第四次
break; // 那么打断整个循环
}
System.out.println("Hello" + i);
}
}
}
1_1_10_16_循环控制_continue语句
/*
另一种循环控制语句是continue关键字。
一旦执行,立跳过当前次循环剩余内容,马上开始下一次循环。
*/
public class Demo15Continue{
public static void main(String[] args){
for(int i =1; i <= 10; i++){
if(i == 4){ // 如果当前是第四层
continue; // 那么跳过当前次循环,马上开始下一次(第5层)
}
System.out.println(i + "层到了。");
}
}
}
/*
永远停不下来的学号,叫做死循环。
死循环的标准格式:
while(true){
循环体;
}
Ctrl + C 结束
*/
public class Demo16DeadLoop{
public static void main(String[] args){
/*
for(int i = 1; i <= 10; ){
System.out.println("Hello" + i);
}
*/
while(true){
System.out.println("I Love java!");
}
System.out.println("Hello"); // 错误!
}
}
1_1_10_18_循环嵌套
public class Demo17LoopHourAndMinute{
public static void main(String[] args){
/*
// 外层执行24次 内层执行24*60次 内内层24*60*60次
for(int hour = 0; hour < 24; hour++){ // 外层控制小时
for(int minute = 0; minute < 60; minute++){ // 内层控制小时之内的分钟
for(int mm = 0; mm < 60; mm++){ // 内内层控制小时之内的分钟之内的秒钟
System.out.println(hour + "点" + minute + "分" + mm + "秒");
}
}
}
*/
/*
// 跳出当前的多重嵌套循环_1
ok:for(int hour = 0; hour < 24; hour++){ // 外层控制小时
for(int minute = 0; minute < 60; minute++){ // 内层控制小时之内的分钟
for(int mm = 0; mm < 60; mm++){ // 内内层控制小时之内的分钟之内的秒钟
System.out.println(hour + "点" + minute + "分" + mm + "秒");
if(hour == 1){
break ok;
}
}
}
}
*/
// 跳出当前的多重嵌套循环_2
boolean found = false;
for(int hour = 0; hour < 24 && !found; hour++){ // 外层控制小时
for(int minute = 0; minute < 60 && !found; minute++){ // 内层控制小时之内的分钟
for(int mm = 0; mm < 60; mm++){ // 内内层控制小时之内的分钟之内的秒钟
System.out.println(hour + "点" + minute + "分" + mm + "秒");
if(hour == 1){
found = true; // 使外层循环判断条件变为false则终止整个循环
break; // 跳出当前循环
}
}
}
}
}
}