JavaSE-循环语句
循环的基本结构:循环条件初始化,循环体,循环条件修改,循环条件判定。包括单层循环和多层循环。
循环的嵌套是循环可以进行多层嵌套,也可以循环内嵌套多个循环。
3.2.1 While语句
while语法结构为:
while(条件表达式){
执行语句块
}
条件表达式符合条件,循环继续执行;否则,循环退出。其中,执行语句块是循环中被重复执行的部分。
例1:计算:0+1+2+…+100
Ans:
int i=0,sum=0;
while(i<=100){//;主要注意防止出现死循环
sum+=i++;//优化代码
//i++;
}
System.out.println("0+1+..+100="+sum);
例2:计算从1到100的所有奇数相加(提示利用while语句)
Ans:
int i=0,t=0;
//因为i=i+2,所以i要小于<98,如果i<100,会多加101的值;其中小于98不包括98
while(i<98){
i+=2;
t+=i;
}
System.out.println(t);
3.2.2 do...while语句
do…while语法结构为:
do{
执行语句块
}while(条件表达式);
注意:do…while的表达式后要有分号。
例:计算:0+1+2+…+100
int i=0,sum=0;
do{
sum+=i++;
}while(i<=100);
System.out.print(sum);
do…while和while循环的区别:
a. do while循环必定执行一次循环体;while循环可能不执行.
b. do while语句必须以分号结尾,while循环可以没有分号.
3.2.3 for语句
for语法结构为:
for(初始化表达式;循环条件表达式;循环后的操作表达式){
执行语句块
}
例1:计算:0+1+2+…+100
Ans:
int sum=0,i=0;
//把循环初始化代码写在循环里面,局部变量只在循环内部有效
//理解局部变量的作用域(范围)
/*for(int i=0;i<=100;i++){
sum+=i;
}*/
//把循环初始化代码写在循环外面,i作用范围大于放在循环内部的i
for(;i<=100;i++){
sum+=i;
}
System.out.println("1+3+..+100="+sum);
例2:随机产生一个10以内的正整数,用户循环输入三个整数,如果用户
输入的整数包含随机数,输出“猜对了”;反之,输出“没猜到”。例如:
随机数为4,用户输入数为:2,3,4。输出:猜对了;随机数为4,用户输入数为:1,2,3。输出:没猜到。
Ans:
Random cs = new Random();
int i=cs.nextInt(10);
System.out.print(i);
int a,b,c;
System.out.print("请输入三个0-9的数字:");
Scanner cc = new Scanner(System.in);
a=cc.nextInt();
b=cc.nextInt();
c=cc.nextInt();
if(a==i || b==i || c==i){
System.out.println("猜对了");
}
else{
System.out.println("没猜到");
}
while和for循环的异同:
a. 都是循环结构,都需要编写和执行循环的4个基本结构:循环初始化,循环体,循环条件修改,循环条件判定;
b. do while 循环一定会执行一次循环体,while循环和for循环可能不执行循环体;
c. 一般的while循环或do while循环用于循环次数不确定的情况,for循环常用于循环次数确定的情况。
3.2.4 foreach语句
for each循环遍历,常用于数值或集合的遍历。
例:
for(String d:score3){
System.out.print(d+"\t");
}
3.3 流程控制进阶
在Java中,流程控制语句可以嵌套使用:嵌套循环语句,嵌套条件语句,循环、条件语句嵌套使用。
靠自身控制无法终止的程序称为“死循环”,可以通过break,continue和return函数提前中断循环。
break
break语句用于终止某个语句块的执行,用在循环语句体中,强行退出循环。主要情况有:
a. 在switch分支中跳出分支结构
b. 在循环结构中跳出当前循环
c. 在循环嵌套中跳出label指定的循环,但需要在循环语句前面指定label标签
例:
outer:for(int i=0;i<10;i++){
//在循环体内部可以编写循环,这是循环嵌套
middle:for(int k=0;k<10;k++){
System.out.print(i+","+k);
while(true){
System.out.println("while 嵌套循环");
//break;//break默认会跳出当前循环
break middle;//在循环嵌套中,break可以跳出label标签指定的循环层次中,在jdk1.7版本后支持,与c语言的goto类似。
}
}
}
continue
continue语句用在循环语句体中,用于终止循环过程,跳出循环体中continue语句下未执行的循环体,开始下一次循环过程。也可以在循环嵌套中,终止本次循环体的执行跳转到label指定的循环中,继续执行。continue语句:只能出现在循环语句while、do…while、for中。
例:
int flag = 1;
outer:while(flag++<10){
for(int i=flag;i>0;i--){
System.out.print("*");
continue outer;//continue可以在循环嵌套中,用于终止当前循环,跳转到外部循环中
}
System.out.println();
}
return
可以在方法内部,终止本方法的执行。也可以在方法内部返回数据值给方法的调用者。
例:
int l=0;
do{
if(l++%2==0){
System.out.println(l+"do while循环嵌套,奇数");
continue;//continue可以在循环内部终止本次循环,执行下一次循环;结束循环体执行,跳转循环条件修改或循环条件判定的语句中
}else{
System.out.println(l+"do while循环嵌套,偶数");
}
if(l==10){
System.out.print(l+"\t");
return;//return可以在方法内部终止方法的执行
}
}while(true);
推荐阅读
-
帮忙看下这个mysql语句要如何优化
-
PHP循环块内亟需的变量,定义在循环外面好还是循环里面
-
php-mysql 问题笔记一——在命令行中可以执行的sql语句,无法从php页面页面执行!
-
sql 查询本年、本月、本日记录的语句,附SQL日期函数
-
弱弱的问一个小问题,关于死循环
-
MySQL 删除数据 Delete 与Truncate语句比较
-
javaweb-使用DButils查询语句在DAO层报错Cannot Create Bean。。。query:。。。
-
Sql语句与存储过程查询数据的性能测试实现代码
-
Python 学习笔记(十一)Python语句(三)
-
使用注解 + 策略模式,减少代码中的if/switch语句,增加代码灵活性