Java语言基础(六):循环结构之 for 循环

循环语句包含:
1.for循环
2.while循环
3.do…while循环
下面我们逐一介绍循环语句:
for循环是一个极其重要的一个知识点,必须要掌握!下面我们介绍一下它的语法格式。
for循环语法格式:

		for(初始化语句;判断条件语句;控制条件语句) {
			循环体语句;
		}

它的执行流程:
1.执行初始化语句;
2.执行判断条件语句,看其返回值是true还是false,如果是true,就继续执行,如果是false,就结束循环;
3.执行循环体语句;
4.执行控制条件语句
5.回到B继续
我们需要注意的是:
1.判断条件语句无论简单还是复杂结果是boolean类型。
2.循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。
3.一般来说:有左大括号就没有分号,有分号就没有左大括号
案例1:
有这样一种需求:请在控制台输出10次"HelloWorld",看如下我写的代码:

public class ForDemo01 {
	public static void main(String[] args) {
		//最原始的做法
		System.out.println("HelloWorld");
		System.out.println("HelloWorld");
		System.out.println("HelloWorld");
		System.out.println("HelloWorld");
		System.out.println("HelloWorld");
		System.out.println("HelloWorld");
		System.out.println("HelloWorld");
		System.out.println("HelloWorld");
		System.out.println("HelloWorld");
		System.out.println("HelloWorld");
		System.out.println("----------");		
		//这种做法不好,代码的重复度太高。
		//所以呢,我们用循环改进
		for(int x=1;x<=10;x++) {
			System.out.println("HelloWorld");
		}
	}
}

案例2:
需求:求出1-10之间数据之和

分析:
		0+1=1
			1+2=3
				3+3=6
					6+4=10
						10+5=15
							 ...
							 
由此可见我们要定义两个变量:
	一个变量用于存储第一个加数,第一个加数其实保存的是以前的所有数据和。默认初始化值应该是0。
	一个变量用于存储第二个加数,第二个加数其实就是每次的数据变化的值。			
	求和思想。		

如下代码:

public class ForDemo02 {
	public static void main(String[] args) {
		//原始做法
		System.out.println(1+2+3+4+5+6+7+8+9+10);
		//定义第一个加数
		int sum = 0;		
		for(int x=1; x<=10; x++) {
			//这里的x其实是第二个加数
			sum = sum + x;
			/*
				0 + 1 = 1
						1 + 2 = 3
								3 + 3 = 6
								...
			*/
			
			//sum += x;
		}
		
		System.out.println("sum:"+sum);
	}

案例3:
需求:求5的阶乘。
什么是阶乘呢?
n! = n*(n-1)! 规则
n! = n*(n-1)(n-2)32*1
求和思想。
求阶乘思想。
如下代码:

public class ForDemo03 {
	public static void main(String[] args) {
		//定义最终结果变量
		int jc = 1;		
		//这里的x其实可以直接从2开始
		//for(int x=1; x<=5; x++) 		
		for(int x=2; x<=5; x++) {
			jc *=x;
		}
		System.out.println("1-5的阶乘是:"+jc);
	}
}

案例4:
需求:在控制台输出所有的”水仙花数”

分析:
		我们都不知道什么叫"水仙花数",你让我怎么做呢?		
		所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
		举例:153就是一个水仙花数。
		153 = 1*1*1 + 5*5*5 + 3*3*3 = 1 + 125 + 27 = 153
		A:三位数其实是告诉了我们范围。
		B:通过for循环我们就可以实现获取每一个三位数
		  但是麻烦是如何获取这个三位数的个,十,百位上的数据
		  我们如何获取一个数据的个,十,百呢?
			假设有个一个数据:153
			ge:	153%10 = 3
			shi: 153/10%10 = 5
			bai:153/10/10%10 = 1
			qian:x/10/10/10%10
			wan:  x/10/10/10/10%10
			...
		C:让ge*ge*ge+shi*shi*shi+bai*bai*bai和该数据比较
		  如果相同,就把该数据在控制台输出。

如下代码:

public class ForDemo04 {
	public static void main(String[] args) {
		//三位数其实是告诉了我们范围。
		for(int x=100; x<1000; x++) {
			int ge = x%10;
			int shi = x/10%10;
			int bai = x/10/10%10;			
			//让ge*ge*ge+shi*shi*shi+bai*bai*bai和该数据比较
			if(x == (ge*ge*ge+shi*shi*shi+bai*bai*bai)) {
				//如果相同,就把该数据在控制台输出。
				System.out.println(x);
			}
		}
	}
}

案例5:
需求:统计”水仙花数”共有多少个

分析:
		A:首先必须知道什么是水仙花数
			所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
			举例:153就是一个水仙花数。
			153 = 1*1*1 + 5*5*5 + 3*3*3 = 1 + 125 + 27 = 153
		B:定义统计变量,初始化值是0
		C:三位数告诉了我们范围,用for循环就可以搞定
		D:获取每一个三位数的个,十,百的数据
		E:按照要求进行判断
		F:如果满足要求就计数。

如下代码:

public class ForDemo05 {
	public static void main(String[] args) {
		//定义统计变量,初始化值是0
		int count = 0;		
		//三位数告诉了我们范围,用for循环就可以搞定
		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+"个");
	}
}

案例6:
需求:请统计1-1000之间同时满足如下条件的数据有多少个:
对3整除余2
对5整除余3
对7整除余2

分析:
		A:定义统计变量,初始化值是0
		B:1-1000之间是一个范围,用for很容易就可以实现。
		C:每个数据要同时满足如下要求
			x%3==2
			x%5==3
			x%7==2
		D:如果满足条件,统计数据++即可,最后输出统计变量

如下代码:

public class ForDemo06 {
	public static void main(String[] args) {
		//定义统计变量,初始化值是0
		int count = 0;	
		//1-1000之间是一个范围,用for很容易就可以实现。
		for(int x=1; x<=1000; x++) {
			/*
				每个数据要同时满足如下要求
				x%3==2
				x%5==3
				x%7==2
			*/
			if(x%3==2 && x%5==3 && x%7==2) {
				count++;
				System.out.println(x);
			}
		}		
		//输出数据
		System.out.println("满足这样条件的数据共有:"+count+"个");
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值