写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成,愿将昔日所获与大家交流一二,希望对学习路上的你有所助益。同时,博主也想通过此次尝试打造一个完善的技术图书馆,任何与文章技术点有关的异常、错误、注意事项均会在末尾列出,欢迎大家通过各种方式提供素材。
文本关键字:基本结构、循环结构、while、do-while、for
为了讲解方便,我们可以将循环结构划分为四个部分来进行描述。当然,这四个部分并不是都要出现,甚至在都不出现时也可以构成一个循环结构。并且,对于不同的循环结构,每个部分的相对位置也不同。
在进入循环结构之前可以定义一些循环中以及循环结束后都要用到的变量,进行赋值。
用于决定是否继续进行循环,如果为假,则循环结束。判断部分可以直接使用一个布尔类型的变量,或者使用表达式,但是必须保证表达式的结果为布尔类型。
循环结构的核心部分,用于书写每次想要重复执行的代码,通常要根据程序功能来设计。
用于辅助控制循环的结束,在循环体之后执行,如变量自增等。
与判断结构类似,当不使用大括号时,循环结构只能控制一行代码,通常我们会添加大括号。
[初始化部分]
(条件判断部分){
循环体
[迭代部分]
}
对于while循环,通常用于循环次数不确定时,如:让使用者决定什么时候退出循环。
(String[] args){
i = ;
(i <= ){
System..(i);
i++;
}
}
;
; {
(String[] args){
Scanner sc = Scanner(System.);
Random random = Random();
n = random.();
flag = ;
(flag){
System..();
temp = sc.();
(temp == n){
System..();
flag = ;
}{
System..();
(sc.() == ){
flag = ;
}
}
}
sc.();
}
}
[初始化部分]
{
循环体
[迭代部分]
}(条件判断部分);
do-while循环与while循环的用法基本相同,主要的不同点在于循环体(迭代部分)一定会先执行一次,然后再进行判断,这非常适合在初学时做成菜单程序。
break只能跳出离自己最近一层的switch-case或循环结构,如果想直接跳出指定层的循环,需要使用到自定义标签。自定义标签的用法比较简单,直接在一个循环结构的起始位置加一个单词,配合冒号使用,在进行跳出时,可以在break后面添加自定义标签的名称,即可跳出指定层的循环。
; {
(String[] args){
Scanner sc = Scanner(System.);
out:{
System..();
System..();
System..();
System..();
System..();
select = sc.();
(select){
:
;
:
;
:
out;
}
}();
sc.();
}
}
(初始化部分;条件判断部分;迭代部分){
循环体
}
for循环主要用于循环次数确定的情况,通常使用break直接跳出循环是由于已经完成了所需工作,终止剩余无用循环以提高程序运行效率。
(String[] args){
sum = ;
( i = ;i <= ;i++){
sum += i;
}
System..(sum);
}
(String[] args){
( i = ;i <= ;i++){
(i % != ){
;
}
System..(i);
}
System..(sum);
}
死循环的出现是由于我们没有正确的指定循环的终止条件和控制相关的变量,导致判断条件部分一直为真,使得循环结构无法结束。但有些时候根据功能需要我们会手动先构造一个死循环,然后使用break来进行跳出,如:菜单程序,由用户来决定什么时候结束,进行循环的跳出。手动构建一个死循环十分简单,但是如果意外的出现死循环就需要优先检查条件判断部分以及相关变量的变化了。
(){
循环体
}
{
循环体
}()
(;;){
循环体
}
更多推荐