Day06-for循环、while循环、do-while循环、死循环的应用

本文介绍了Java编程中for、while和do-while循环的使用,包括求和、水仙花数、阶乘等常见问题的解决。同时,展示了如何利用Math.random()生成随机数,并通过一个猜数字游戏实例演示了循环与条件判断的结合应用。
摘要由CSDN通过智能技术生成

for循环

求和思想?
        两个变量
        1)最终结果变量 int sum = 0 ;
        2)循环中的变量x不断的在变化
            举例:
                1-10之间的和(数据本身1,2,3,4,5,6,7,8,9,10...变量x)
        3)循环获取一直变化的数据x
                sum+=x ;循环体语句  sum = sum +x ;
                
        4)输出最终结果变量sum即可!        
        
    
    
    需求:
        请您求出1~10数据的和

​
class ForDemo2{
	public static void main(String[] args){
	int sum = 0 ;
		//使用for循环:可以获取1-10之间的数据
		for(int x = 1; x <= 10 ; x ++){ //for循环:就是遍历
		//(就是将给定范围内的数据一一获取到完成业务操作)
			//x=1,2,3,4,5,6,7,8,9,10
			
			sum += x ;
		}
		System.out.println("1-10之间的数据和是:"+sum) ;
		
	}
}

​

/*
    什么是水仙花数?
    
    水仙花数:指的三位数,而且每个位的立方和就是当前数据本身!
    153 = 3*3*3+5*5*5 + 1*1*1 
    
    需求:
        求出所有的水仙花数是什么?
        
        
        分析:
            1)三位数:已经明确了范围100-999, 变量x (for循环,明确循环次数) 
            2)确定三位数的数据值 x
                    规律:确定每个位上的数据
                        定义三个变量
                            int ge = x % 10 ; //153 % 10 = 3 ;
                            int shi = x /10 % 10 ; //153 /10 =15 %10 = 5
                            
                            int bai = x /10/10 % 10 ; //153 /100 % 10 = 1
                            
            3)确定了数据之后:
                只要满足条件
                    if(x==(ge*ge*ge+shi*shi*shi+bai*bai*bai)){
                        
                        //就输出x即可!
                    }
                                
                            
*/

​
class ForDemo3{
	
	public static void main(String[] args){
		
		System.out.println("水仙花数是以下的数据:") ;
		//求出所有的水仙花数
		//水仙花:三位数--明确范围
		for(int x = 100 ; x <=999 ; x ++){
			
			//获取到x的数据,需要确定每个位上的数据本身
			//定义三个变量 ge,shi,bai 
			int ge = x % 10 ; //获取个位上的数据
			int shi = x /10 % 10 ; //获取十位上的数据
			int bai = x /10 /10 % 10 ;//获取百位上的数据
			
			//满足条件
			if(x==(ge*ge*ge+shi*shi*shi+bai*bai*bai)){
				System.out.println(x) ;
			}
			/*
				水仙花数是以下的数据:
				153
				370
				371
				407
			*/
			
			
		}
	}
}

​

/*
    课堂练习
        求1-100之间的和
        求1-100之间的偶数和
        求5的阶乘
*/

​
class ForTest1{
    public static void main(String[] args){
        
        //求1-100之间的和
        //定义一个最终结果变量
        int sum = 0 ;
        for(int x = 1 ; x <=100 ; x ++){
            
            //循环体语句
            sum += x ;
            
        }
        System.out.println("1-100之间的和:"+sum) ;
        
        System.out.println("------------------------------") ;
        //求1-100之间的偶数和
        int sum2 = 0 ;//最终结果变量
        for(int x = 1 ; x <=100 ; x ++){
            //获取到1-100之间的数据
            //满足条件
            if(x % 2 == 0 ){
                //偶数
                //求和
                sum2 += x ;
            }
            
        }
        
        System.out.println("1-100之间的偶数和:"+sum2) ;
        
        
        System.out.println("------------------------------")  ;
        
        
        //求5的阶乘
        /*
            求阶乘思想 和求和思想一致
            
            n! = n*(n-1)*(n-2)...*3*2*1 ;
        */
        
        //定义一个最终结果变量
        int jc = 1 ;//1!永远是1
        
        for(int x = 2 ; x<=5 ; x ++){//1*1=1,x的变量从2开始也行
            //获取到1-5之间的数据
            jc*=x ; //jc = jc * x ;
        }
        System.out.println("5的阶乘是:"+jc) ;
    }
} 

​

/*
    统计思想:
    
    需求:统计所有的水仙花数有多少个?
            
            步骤
                1)定义统计变量 count ,从0开始
                2)水仙花数:三位数,明确了范围,需要使用for循环100-999之间 x
                3)确定每个位数据本身
                        int ge  = x % 10 ;
                        int shi = x /10 % 10 ;
                        int bai = x /10/10 % 10 ;
                4)当前满足这个条件 
                        x == (ge*ge*ge+shi*shi*shi+bai*bai*bai)
                        
                            统计变量++ ;
                            
                5)输出统计变量即可!
            
*/

​
class ForDemo{
    public static void main(String[] args){
        //1)定义一个统计变量
        int count = 0 ;
        
        //2)水仙花数:三位数,明确了范围,需要使用for循环100-999之间 x
        for(int x = 100; x <1000; x ++){
            //确定每个位数据本身
            int ge = x %10 ;
            int shi = x / 10 % 10 ;
            int bai = x /10 /10 %10 ;
            
            //满足条件
            if(x ==(ge*ge*ge+shi*shi*shi+bai*bai*bai)){
                count ++ ;
                //输出
                System.out.println("第"+count+"次的水仙花数是:"+x) ;
                
            }
        }
        System.out.println("水仙花数共有"+count+"个") ;
    }
} 

​

while循环

/*
    while循环格式
        扩展格式:
            初始化语句;
            while(条件表达式){
                循环体语句;
                控制体语句(步长语句) ;
            }
            
    流程:
            1)初始化语句进行赋值
            2)判断条件表达式是否成立
                如果成立,执行循环体语句,控制体语句对变量进行自增或者自减
            3)继续判断条件表达式是否成立
                ....
                ....
            4)如果条件表达式不成立,while循环结束
            
            
                    

*/

​
class WhileDemo{
    public static void main(String[] args){
        
        /*
            扩展格式:
            初始化语句;
            while(条件表达式){
                循环体语句;
                控制体语句(步长语句) ;
            }
            
        */
        //要在控制台输出 5次"我爱高圆圆"
        //原始做法:输出5次
        //System.out.println() ;
        
        //套格式去使用while
        int x = 1 ;
        while(x<=5){
            System.out.println("我爱高圆圆") ;
            x++;
        }
    }
}

​

/*

面试题:
    
    while循环和for循环的区别
    
    共同点:都能够描述循环的思想,将重复度高的代码进行优化,解决冗余度问题
    不同点:
        1)格式上不同
            for(初始化语句;条件表达式;控制体语句){
                    循环体语句;
            }
            
            初始化语句;
            while(条件表达式){
                循环体语句; 
                控制体语句;
            }
            
        2)从内角度考虑,for循环使用完毕结束后,那么当前这个变量也就被释放掉了,而while不会,它始终
        可以访问到这个变量,所以相对来说说,for循环比较节省内存空间!
        
        3)释放明确循环次数
                明确循环次数:优先采用for循环,其次再是while
                        while循环:不明确循环次数,使用
                        
                        实际开发中,for循环使用最多!
                        
                        while循环一般都是这样使用!
                        while(true){ 死循环
                                //当达到某种条件,break;中断了
                                    
                        }
*/

​
class WhileDemo2{
    
    public static void main(String[] args){
        //分别使用for和while来实现 6次"学习Java哪家强,高新六路立人科技找千锋!"
        
        //for循环
        for(int x = 1 ; x <=6 ; x ++){
            System.out.println("学习Java哪家强,高新六路立人科技找千锋!") ;
        }
        //System.out.println(x) ;//找不到符号
        System.out.println("over...") ;
        
        System.out.println("---------------------------------") ;
        /*
            初始化语句;
            while(条件表达式){
                循环体语句; 
                控制体语句;
            }
*/
        
        int y = 1 ;
        while(y<=6){
            System.out.println("学习Java哪家强,高新六路立人科技找千锋!") ;
            y++ ;
        }
        System.out.println(y) ;
    }
    
}

​

/*
    while循环格式:
                1)求出1-100之间的和
                2)求出1-100之间的偶数和
                3)求5的阶乘!
                4)求出所有的水仙花数
                5)统计所有的水仙花数有多少个
*/

​
class WhileTest{
    
    public static void main(String[] args){
        
        //求出1-100之间的和
        //定义一个最终结果变量
        int sum = 0 ;
        int x = 1; 
        while(x<=100){
            sum += x ;
            x ++ ;
        }
        System.out.println("1-100之间的和是"+sum) ;
        
        //2)求出1-100之间的偶数和
        System.out.println("----------------------------") ;
        int sum2 = 0 ;
        int y = 1 ; 
        while(y<=100){
            if(y%2==0){
                sum2 += y ;
                
            }
            y++ ;
        }
        System.out.println("1-100之间的偶数和是"+sum2) ;
        
        System.out.println("----------------------------") ;
        
        //求5的阶乘!
        int jc = 1 ;
        int m = 2; 
        while(m<=5){
            jc *= m ;
            m++ ;
        }
        System.out.println("5的阶乘是:"+jc) ;
        
        
        System.out.println("----------------------------") ;
        
        //求出所有的水仙花数
        System.out.println("水仙花是以下:") ;
        
        int j = 100 ; //三位数,从100开始
        while(j<=999){
            
            //确定每个位的数据本身
            int ge = j % 10 ;
            int shi = j /10 % 10 ;
            int bai = j /10 /10 % 10 ;
            
            //判断
            if(j==(ge*ge*ge+shi*shi*shi+bai*bai*bai)){
                //输出
                System.out.println(j) ;
            }
            
            j ++ ;
        }
        
        
        System.out.println("----------------------------") ;
        
        //统计所有的水仙花数有多少个
        
        //定义统计变量
        int count = 0 ; 
        int n = 100 ; //三位数,从100开始
        while(n<=999){
            
            //确定每个位的数据本身
            int ge = n % 10 ;
            int shi = n /10 % 10 ;
            int bai = n /10 /10 % 10 ;
            
            //判断
            if(n==(ge*ge*ge+shi*shi*shi+bai*bai*bai)){
                count ++ ;//统计变量++
                //输出
                System.out.println("第"+count+"次的水仙花是:"+n) ;
            }
            
            n++ ;
        }
        System.out.println("水仙花数共有:"+count+"个") ;
        
    }
    
} 

​

do-while循环

/*

do-while格式:
    初始化语句;
    do{
        循环体语句;
        控制体语句;
    }while(条件表达式) ;
    
    执行流程:
        1)初始化语句执行
        2)执行条件表达式,如果条件表达式不成立,循环体至少执行一次!
        如果条件表达式成立...然后控制体语句,依次判断;
        
        
        do-while循环和其他两个循环的最大的区别:循环体至少执行一次;
*/

​
class DoWhileDemo{
    public static void main(String[] args){
        
        //在控制台输出6次"我喜欢高圆圆,虽然她已经42岁了" 
        int x = 7 ;//初始化语句
        do{
            System.out.println("我喜欢高圆圆,虽然她已经42岁了") ;
            x ++ ;
        }while(x<=6) ;
        
    }
}

​

死循环的应用

 /*
    死循环中常见的两种格式
        for(;;){
            //业务操作
        }
        
        while(true){//恒成立   (使用居多)
            //业务操作..
        }
        
        
*/

​
class DieWhileForDemo{
    
    public static void main(String[] args){
    
        
        //for循环的死循环格式
        /*
        for(;;){
            System.out.println("我很高兴,学习了for循环的死循环格式...") ;
        }
        */
        
        //while循环的死循环格式
        while(true){
            System.out.println("我很高兴,学习了while循环的死循环格式...") ;
            
            //实际开发中,需要完成一些业务逻辑操作,
            //当达到某种条件的时候,结束掉死循环,---使用 break ;(结束,中断)
        
        }
    }
}

​

/*
    Jdk提供了一个数学运算类java.lang.Math(是一个工具类)
    可以针对三角函数,对数,指数等等进行数学运算!
    
    
    提供了一个方法:
            public static double random():产生的一个随机数[0.0,1.0)
    
*/

​
class MathDemo{
    public static void main(String[] args){
        
        //使用Math数学运算的工具类,帮助我们产生[0.0,1.0)之间的随机数呢
        //double result = Math.random() ; //使类名.方法名名() ;
        //System.out.println(result) ;
        
        //需要产生的int类型的1-100之间的随机数
        for(int x =1 ; x <=10 ;x ++){
            int result = (int)(Math.random()*100+1);
        System.out.println(result) ;
        }
        
    }
}

​

/*
    需求:
            玩一个猜数字游戏
            
            
    实现步骤:
        1)猜1-100之间的随机数,产生1-100之间的随机数 
            int 变量名 = (int)(Math.random()*100+1) ;
            
            
        //不断录入数据,将下面的逻辑---使用while(true){}    
        2)键盘录入一个数据int---guessNum
        
        3)判断 使用guessNum和产生的1-100之间的随机数进行比较,
            如果大了,提示"对不起,您要猜的数据大了"
            如果小了,提示"对不起,您要猜的数据小了"
            如果一致,提示"恭喜您,猜对了..."
            
            提示"游戏结束了..."
                
                

*/

​
//导包
import java.util.Scanner ;
class WhileTest{
    
    public static void main(String[] args){
        System.out.println("准备开始玩游戏了...") ;
        
        //产生一个1-100之间的随机数
        int num = (int)(Math.random()*100+1) ;
        
        
        //定义统计变量
        int count = 0 ;
        //需要不断录入,while(true){}
        while(true){
            
            //统计变量++
            count ++ ;
            
            //创建键盘录入对象
            Scanner sc = new Scanner(System.in) ;
            
            //提示并录入数据
            System.out.println("请您输入要猜的数据:") ;
            int guessNum = sc.nextInt() ;
            
            //判断
            if(guessNum > num){
                System.out.println("对不起,您要猜的数据大了...") ;
            }else if(guessNum < num){
                System.out.println("对不起,您要猜的数据小了...") ;
            }else{
                System.out.println("恭喜您,第"+count+"次猜中了...") ;
                
                //结束循环
                break ;
            }
        }
        
        //System.out.println("游戏结束了,欢迎下次使用!") ;
        
    }
}

​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值