文本关键字:基本结构、循环结构、while、do-while、forjava
为了讲解方便,咱们能够将循环结构划分为四个部分来进行描述。固然,这四个部分并非都要出现,甚至在都不出现时也能够构成一个循环结构。而且,对于不一样的循环结构,每一个部分的相对位置也不一样。dom
在进入循环结构以前能够定义一些循环中以及循环结束后都要用到的变量,进行赋值。ide
用于决定是否继续进行循环,若是为假,则循环结束。判断部分能够直接使用一个布尔类型的变量,或者使用表达式,可是必须保证表达式的结果为布尔类型。工具
循环结构的核心部分,用于书写每次想要重复执行的代码,一般要根据程序功能来设计。设计
用于辅助控制循环的结束,在循环体以后执行,如变量自增等。
与判断结构相似,当不使用大括号时,循环结构只能控制一行代码,一般咱们会添加大括号code
[初始化部分] while(条件判断部分){ 循环体 [迭代部分] }
对于while循环,一般用于循环次数不肯定时,如:让使用者决定何时退出循环。blog
public static void main(String[] args){ // 初始化部分 int i = 1; // 括号中为循环继续执行的条件:当i的值小于等于9时 while(i <= 9){ // 循环体部分 System.out.println(i); // 迭代部分:辅助控制循环结束或根据循环体的须要来写 i++; } }
import java.util.Scanner; import java.util.Random; public class Test{ public static void main(String[] args){ // 初始化Scanner,用于从键盘读入数据 Scanner sc = new Scanner(System.in); // 初始化随机数生成工具 Random random = new Random(); // 随机生成一个0~99的整数 int n = random.nextInt(100); // 定义一个布尔类型的变量,用于控制循环的结束 boolean flag = true; // 使用flag做为控制循环结束的变量 while(flag){ System.out.println("请输入一个数:"); // 从键盘读取一个数 int temp = sc.nextInt(); // 判断输入的数是否与随机数相同,猜中则退出 if(temp == n){ System.out.println("猜中了!"); // 修改flag为false,使得循环退出 flag = false; }else{ // 若是没有猜中,就让用户本身决定是否是要继续猜 System.out.println("猜错了!还要继续吗?1:继续2:退出"); // 若是输入的数字为2则退出(此处暂不考虑输入出错等其余状况) if(sc.nextInt() == 2){ // 修改flag为false,使得循环退出 flag = false; } } } // 使用后关闭 sc.close(); } }
[初始化部分] do{ 循环体 [迭代部分] }while(条件判断部分);
do-while循环与while循环的用法基本相同,主要的不一样点在于循环体(迭代部分)必定会先执行一次,而后再进行判断,这很是适合在初学时作成菜单程序。it
break只能跳出离本身最近一层的switch-case或循环结构,若是想直接跳出指定层的循环,须要使用到自定义标签。自定义标签的用法比较简单,直接在一个循环结构的起始位置加一个单词,配合冒号使用,在进行跳出时,能够在break后面添加自定义标签的名称,便可跳出指定层的循环。for循环
import java.util.Scanner; public class Test{ public static void main(String[] args){ // 初始化Scanner,用于从键盘读入数据 Scanner sc = new Scanner(System.in); // 在此处使用自定义标签out(名称能够自定义)来进行标记 out:do{ System.out.println("****欢迎使用xxx系统****"); System.out.println("****1.系统功能一*******"); System.out.println("****2.系统功能二*******"); System.out.println("****3.退出系统*********"); System.out.print("请输入功能选项:"); // 从键盘读入一个数选择要执行的功能 int select = sc.nextInt(); switch(select){ case 1: // 功能一相关代码 break; case 2: // 功能二相关代码 break; case 3: // 指定跳出外层的do-while循环,不然只能跳出当前的switch-case结构 break out; } // 判断条件一直为真,除非用户输入选项3退出系统,则使用break跳出。 }while(true); // 使用后关闭 sc.close(); } }
for(初始化部分;条件判断部分;迭代部分){ 循环体 }
for循环主要用于循环次数肯定的状况,一般使用break直接跳出循环是因为已经完成了所需工做,终止剩余无用循环以提升程序运行效率。程序设计
public static void main(String[] args){ // 定义一个整数类型变量,用于记录结果 int sum = 0; for(int i = 1;i <= 10;i++){ // 根据逻辑,将每次获得的值相加 sum += i; } // 输出计算结果 System.out.println(sum); }
public static void main(String[] args){ for(int i = 0;i <= 100;i++){ // 判断当前数字的奇偶性,若是是奇数则跳过输出语句 if(i % 2 != 0){ // 若是是奇数,将跳过循环体剩余的部分,迭代部分不受影响 continue; } System.out.println(i); } // 输出计算结果 System.out.println(sum); }
死循环的出现是因为咱们没有正确的指定循环的终止条件和控制相关的变量,致使判断条件部分一直为真,使得循环结构没法结束。但有些时候根据功能须要咱们会手动先构造一个死循环,而后使用break来进行跳出,如:菜单程序,由用户来决定何时结束,进行循环的跳出。手动构建一个死循环十分简单,可是若是意外的出现死循环就须要优先检查条件判断部分以及相关变量的变化了。
while(true){ 循环体 }
do{ 循环体 }while(true)
// 是的,你没有看错,全部的部分都不须要填写,可是分号不能省略 for(;;){ 循环体 }