04流程控制之循环结构

流程控制之循环结构

什么是循环

概念:通过某个条件控制,使代码重复有规律的执行

循环结构的分类

while循环
语法:
循环变量的初始化;
while(循环条件的判断){
    循环体语句;
    循环变量的改变; 
}
循环体执行的次数: 0--n
死循环形式:
while(true){

}
注意:
while(false){} 这样写是错误的
但是布尔表达式的值可以为false 不能直接写成false
案例:用while循环实现跑圈过程
public class Demo{
	public static void main(String[] args) {
		// 从第一圈开始跑   循环变量的初始化
		int i = 1;

		//在跑道上跑圈
		while (i<=10) {
			System.out.println("这是我跑的第 "+i+"圈");
			i++;//在心里加 1 
		}
		System.out.println("我跑完了");
	}
	
}


案例:计算 1+2+...+100 的和
public class Demo{
	public static void main(String[] args) {
		//定义一个变量用于存放每次累加的和
		int sum = 0;
		int i = 1;
		while (i<=100) {
			//循环体 将每次循环变量的值进行累加
			sum = sum + i;//
			i++;
		}

		//输出累加完的结果
		System.out.println("结果是:"+sum);	
	}
	
}

练习: 计算 1--100之间  所有偶数的和
第一种:
public class Demo{
	public static void main(String[] args) {

		int sum = 0;//累加器

		int i = 1;//循环变量的初始化

		while (i<=100) {

			//如果i为偶数就进行累加
			if (i%2==0) {
				sum = sum+i;//sum+=i
			} 
			i++;	
		}
		//打印输出结果
		System.out.println("结果是:"+sum);
	
	}
	
}

第二种:
public class Demo{
	public static void main(String[] args) {

		int sum = 0;

		int i = 2;

		while (i<=100){
			sum+=i;
			i+=2;
		}
		
		System.out.println("结果是:"+sum);

	}
	
}

do…while循环
语法:

循环变量的初始化;
do{
	循环体;
	循环变量的改变;
}while(循环条件的判断);
循环体执行的次数是:1--n
死循环的形式:
do{

}while(true);
注意:do while循环的布尔表达式可以直接写为false
do{

}while(false);
案例:用do while循环实现跑圈过程
public class Demo{
	public static void main(String[] args) {

		//定义循环变量 初始化
		int i = 1;

		do {
			System.out.println("这是我跑的第 "+i+"圈");
			i++;
		} while (i<=10);
	}
	
}


练习:用do while  循环计算 1-100 所有奇数的和
public class Demo{
	public static void main(String[] args) {

		int sum = 0;

		int i = 1;

		do {
			sum+=i;
			i+=2;	
		} while (i<100);

		System.out.println("结果是:"+sum);
	}
	
}

for循环
语法:

for(循环变量的初始化 ; 循环条件的判断 ; 循环变量的改变 ){
	循环体语句;
}
循环体执行的次数是:0-n
死循环的形式:
for(;;){}
for( ;true; ){}
案例:用for循环 模拟跑圈的过程
public class Demo{
	public static void main(String[] args) {

		for( int i = 1;i<=10 ;i++ ){
			System.out.println("这是我跑的第 "+i+"圈");
			
		}
	}
	
}

案例:计算100以内所有偶数的和
public class Demo{
	public static void main(String[] args) {
		int sum = 0;
		for(int i = 2;i<=100;i+=2){
			sum+=i;
		}

		System.out.println("结果是:"+sum);
		
	}
	
}

练习:
打印100以内所有的奇数和
public class Demo{
	public static void main(String[] args) {
		int sum = 0;
		for(int i = 1;i<=100;i+=2){
			sum+=i;
		}

		System.out.println("结果是:"+sum);
		
	}
	
}


for循环的循环条件的判断可以直接写为true 但是不能直接写为false
public class Demo{
	public static void main(String[] args) {
		
		for(int i = 1 ;true ;i++ ) {
			System.out.println("hello world"+i);
			
		} 
		
	}
	
}for循环的循环条件的判断省略不写时 默认为true
public class Demo{
	public static void main(String[] args) {
		
		for(int i = 1 ; ;i++ ) {
			System.out.println("hello world"+i);
			
		} 
		
	}
	
}for循环的所有条件都省略不写时 括号中的分号不能省略 这种形式就是for循环的死循环形式
public class Demo{
	public static void main(String[] args) {
		
		for( ; ; ) {
			System.out.println("hello world"+i);
			
		} 
		
	}
	
}

总结三种循环的应用场景
1.从功能上来说三种循环都可以实现同样的功能
2.whiledo while 一般用于未知循环次数的场景
3.for 循环一般用于已知循环次数的场景
4.do...while循环的循环次数和其他两个循环不一样是 1-n  不常用

循环控制语句

break:结束整个循环
案例:当该跑第五圈的时候 结束跑圈
public class Demo{
	public static void main(String[] args) {
		
		for(int i = 1;i<=10;i++) {
			if(i==5){
				break;
			}
			System.out.println("这是我跑的第"+i+"圈");
			
		} 	
	}
}

continue:跳过本次循环 直接进行下一次循环
案例:当该跑第五圈的时候 直接心里跳过了 直接跑第六圈
public class Demo{
	public static void main(String[] args) {
		
		for(int i = 1;i<=10;i++) {
			// 如果该跑第5圈 直接跳过
			if (i==5) {
				continue;//跳过第五圈
			} 
			System.out.println("这是我跑的第"+i+"圈");
		} 	
	}
}

循环的嵌套

案例需求:
在控制台上 输出以下的图形

****
****
****
代码:
public class Demo{
	public static void main(String[] args) {
		for(int i = 1;i<=3;i++) {
			for(int j = 1;j<=4;j++) {
				System.out.print("*");
			} 
			System.out.println();
				
		} 
	}
}

概念:在一个循环结构中的循环体又是一个循环结构

案例:

*
**
***
****
实现:
public class Demo{
	public static void main(String[] args) {
		for(int i = 1;i<=4;i++) {
			for(int j = 1;j<=i;j++) {
				System.out.print("*");	
			} 
			System.out.println();	
		} 
	}
}

案例:
           i      
   *       1      3个空格   1*
  **       2      2个空格   2*
 ***       3      1个空格   3*
****       4      0个空格   4*
代码:

public class Demo{
	public static void main(String[] args) {
		for(int i = 1;i<=4;i++) {
			//空格
			for(int j = 1;j<=4-i;j++) {
				System.out.print(" ");
			} 
			//*
			for(int k = 1;k<=i;k++) {
				System.out.print("*");
				
			} 
			//换行
			System.out.println();
			
		} 
	}
}

案例:
********
*      *
*      *
********
代码:
public class Demo{
	public static void main(String[] args) {
		for(int i = 1;i<=4;i++) {
			if (i==1||i==4) {
				for(int j = 1;j<=8;j++) {
					System.out.print("*");
				} 
				System.out.println();
			} else{
				System.out.print("*");
				for(int k = 1;k<=6;k++) {
					System.out.print(" ");
				} 
				System.out.print("*");
				System.out.println();
			}	
		} 
	}
}

案例:打印9*9乘法表
                          i        j 
1*1 = 1                   1        循环11*2 = 2  2*2 = 4          2        循环21*3 = 3  2*3 = 6  3*3 = 9

j*i = j*i   ---->j+"*"+i+"="+(j*i)
代码:
public class Demo{
	public static void main(String[] args) {

		for(int i = 1;i<=9;i++) {
			for(int j = 1;j<=i;j++){
				System.out.print(j+"*"+i+"="+(j*i)+"\t");
			}
			//换行、
			System.out.println();	
		} 	
	}
}

随机数

java的类库中有一个类 Math 
random();

Math.random() 就是一个随机数  范围为 0-1 但是不包括1的一个小数 

猜数字游戏

项目的需求
1.玩家只有十次机会猜数字/
2.系统随机产生一个100以内的整数/
3.如果猜中了  输出  恭喜中奖  奖品是 苍老师 游戏退出//
4.如果没有猜中  输出  你个菜鸡  你还有几次机会//
5.当机会用完 提示输出  请投币 重新开始//
6.当输入小数或者不在0-99之间 输出 你个傻叉  请看要求

需求分析
1.让系统随机产生一个整数
2.键盘接收我们输入一个数据
3.将这两个数进行比较 

guess>=0&&guess<100  
&&guess-(int )guess ==0
案例:
import java.util.*;
public class Demo{
	public static void main(String[] args) {
		//1 
		int sj = (int)(Math.random()*100);
		System.out.println("答案是:"+sj);
		
		//2键盘输入一个数
		Scanner s = new Scanner(System.in);

		for(int i = 1;i<=10;i++) {
			
			System.out.println("请输入一个1-99之间的整数:");
			double guess  = s.nextDouble();//猜
			
			//进行数据合法的判断
			if (guess>=0&&guess<100&&guess-(int )guess ==0) {
				//3 进行比较大小
				if (guess==sj) {
					System.out.println("猜对了 恭喜中奖 奖品是肤白貌美大长腿的美女一枚");
					break;
			
				}else{
					System.out.println("你个菜鸡  猜错了 你还有"+(10-i)+"次机会");
			
				} 

				if (i==10) {
					System.out.println("请投币 重新开始");
					
				} 
			
			} else {
				System.out.println("你个脑子进水的人 请看需求");
				
			}
			
			
		} 
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值