循环语句
- for循环
- while循环
- do while循环
- 循环嵌套
- break,continue关键字
循环语句是根据条件要求程序反复执行某些操作,直到程序"满意"为止。
1. for循环语句
for循环语句格式
for(表达式1①;表达式2 ②;表达式3 ③){
//循环要做的事情 ④ }
for语句执行规则:
先执行表达式1,然后执行表达式2,
如果表达式2结果为true, 执行for大括号的代码
执行完大括号的代码, 执行表达式3, 再去执行表达式2
①–>②-true->④–>③–>②-true->④–>③…
|fasle
结束
特征: 先判断后执行,可能一次都不执行
细节:
1.循环变量的作用域:默认在for内部有效
count作用域在for内部有效
for(int count = 1;count <=10;count++){
System.out.println(count);
}
2.for小括号中三个表达式, 都可以省略, 但是两个分号不能省略
//表达式1省略,好处:提升循环变量的作用域
int count = 1;
for(;count <=10;count++){
}
System.out.println(count);
表达式2省略,循环条件恒为true
int count = 1;
for(;;count++){
//死循环
System.out.print(count);
}
//表达式3省略
int count = 1;
for(;count<=10;){
System.out.print(count);
count++;//修改循环变量
}
//表达式都省略
for(;;){
System.out.print("for循环"); //死循环
}
2.while循环
while循环语法格式
while(条件){
//循环要做的事情
}
while语句执行规则:
先进行条件判断,条件为true执行大括号的代码,执行完,又进行条件判断
循环结束:1.条件为flase 2.大括号中的代码执行break代码
while特征:先判断,后执行,可能一次都不执行
使用循环的步骤:
1.先判断问题中是否有重复做的事情,或者重复的代码,如果有,使用循环;如果没有,不使用
2.找循环条件,一般是变量与值的比较 i=5;i<10
3.找重复执行的代码
4.避免出现死循环,修改循环变量,每循环一次,修改一次
//while循环 输出1-10
//每执行一次,计数一次,定义一个初始值为0(java)/1的变量,每循环一次加1
int count = 1;
//循环条件:count<=10
//重复的代码:输出
//修改循环变量:count++ ++count count+=1
while(count <= 10){
System.out.println(count);
count++; //修改循环变量
}
3.do-while循环
do-while循环语句格式:
do{
//循环要做的事情
}while(条件);//注意有分号
do-while循环和while循环的区别是do-while的循环体至少被执行一次,
执行流程下图所示
案例:模拟学生做题,如果没通过就继续做,通过了则结束
import java.util.Scanner;
public class Demo{
public static void main(String[] args){
Scanner input = new Scanner(System,in);
//1.有重复做的事情:做题
//2.循环条件: 不通过 字符串isOK 输入 y 通过 n 不通过
//3.做题
//4.修改循环变量
String isOk;
do{
System.out.println("学生正在做题");
System.out.println("老师输入是否通过(y/n)");
//isOk的作用域:包裹它的最近的大括号内部有效
isOk = input.next();//修改循环变量
}while(isOK,equals("n"));
}
}
4. 循环嵌套
循环内部嵌套循环
while嵌套while,for,do-while
do-while嵌套do-while,for,while
while嵌套while,for,do-while
外循环执行一次,内循环执行一轮
总循环次数=外循环次数*内循环次数
内循环执行条件: 外循环成立, 内循环条件成立
public class Demo1{
public static void main(String[] args){
//循环嵌套
int i = 1;
while(i<10){
for(int j = 0;j<10;j++){
System.out.print(i+""+j+",");
}
System.out.println();
i++;
}
}
}
5. break continue 关键字
continue 用在循环中,基于条件控制,跳过某次循环体内容的执行,
继续下一次的执行
break 用在循环中,基于条件控制,终止循环体内容的执行,也就
是说结束当前的整个循环
break:跳出,退出
- 在switch中使用,表示退出switch
- 在循坏中使用,表示退出循坏
continue:继续
在循环中使用,跳过本次循环,直接进入下一次循环
break,continue一般配合if使用
public class Demo1{
public static void main(String[] args){
//break,continue
/*
for(int i = 1; i<=10;i++){
if( i == 3){
//break: 退出循环
//break; //1 2
//continue: 跳过本次循环,直接进入下次循环
continue; // 1 2 4 5 6 7 8 9 10
}
System.out.println(i);
}
*/
int j = 1;
//循环嵌套
while(j<=9){ //外循环
/*
if(j==5){
break; //对外循环起作用
}
*/
for(int k = 0; k<10;k++){ //内循环
System.out.print(j+""+k+", ");
if(k==5){
break; //对内循环起作用
}
}
System.out.println();
j++;
}
}
}
嵌套循环中使用break,continue,写在哪个循环内,就对哪个循环起作用
public class Demo4{
public static void main(String[] args){
//满足7的条件
for(int i = 100;i>=1;i--){
if(i%7 == 0 || i%10 ==7 || i/10%10 ==7){
System.out.println(i+"是需要的数字");
}
}
}
}
public class Demo4{
public static void main(String[] args){
for(int i = 100;i>=1;i--){
//不满足7的条件 跳过
// if(!(i%7 == 0 || i%10 ==7 || i/10%10 ==7)){
if(i%7 != 0 && i%10 !=7 && i/10%10 != 7 ){
continue;
}
System.out.println(i+"是需要的数字");
}
}
}
6.Random类
作用:用于产生一个随机数
使用步骤:
第一步:导包
import java.util.*;
第二步:创建对象
Random r = new Random();
第三步:获取随机数
int number = r.nextInt(10);// 10以内的随机数,取值范围是 [0,10}
产生:[n,m] r.nextInt(m-n+1)+n
推导:[n,m) (n,m) (n,m]
[n,m): r.nextInt(m-n)+n
(n,m): r.nextInt(m-n-1)+n+1
(n,m]:r.nextInt(m-n)+n+1
如:r.nextInt(100)产生的随机数,实际上是大于等于0,小于100的,
后面加的n,实际上决定的是前面闭区间的数
案例:猜数字游戏
系统随机产生1~100之间的随机数(使用 Random)
然后使用循环判断,记录次数
演示:(假设系统随机的数字为58) 请输入您第1次猜的数字:50 小了 这个数应该在50~100之间 请输入您第2次猜的数字:75
大了 这个数应该在50~75之间 请输入您第3次猜得数字:60 大了 这个数应该在50~60之间 请输入您第4次猜得数字:55
小了 这个数应该在55~60之间 请输入您第5次猜得数字:58 太棒了,您猜中了您猜的次数为:5次
import java.util.Scanner;
import java.util.Random;//第一步:导包
public class Demo11 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Random r = new Random();//第二步:创建对象
int n = r.nextInt(100)+1;//第三步:获取随机数[1,100]之间的
int max = 100;
int min = 1;
for(int i= 1;i<100;i++){
System.out.println("请输入您第"+i+"次猜的数字:");
int num = input.nextInt();
if(num>n){
max = num;
System.out.println("您输入的大了,应该在"+min+"~"+num+"之间");
}
else if(num<n){
min = num;
System.out.println("您输入的小了,应该在"+num+"~"+max+"之间");
}
else if(num==n){
System.out.println("你太天才了,猜对了!");
System.out.println("您猜的次数为:"+i+"次");
return;
}
}
}
}