for循环格式:
for(初始化语句;判断条件语句;控制条件语句) {
循环体语句;
}
执行流程:
A:执行初始化语句
B:执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环
C:执行循环体语句;
D:执行控制条件语句
E:回到B继续。
注意事项:
A:判断条件语句无论简单还是复杂结果是boolean类型。
B:循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。
C:一般来说:有左大括号就没有分号,有分号就没有左大括号
下面练习:
1、需求:在控制台输出数据1-10
[代码]java代码:
?
1 2 3 4 5 6 7 8 9 | class LianShou{
public static void main(String[] args)
{
for(int i=1;i<=10;i++) // 需求是输出1-10
{
System.out.println(i);
}
}
}
|
2、需求:求出1-10之间数据之和
[代码]java代码:
?
01 02 03 04 05 06 07 08 09 10 11 | /*
需求:求出1-10的和
分析:0+1=1
1+2=3
3+3=6
6+4=10
10+5=15
...
可以看得出来 第一个加数永远是前面加法的结果
第二个加数则是从1开始递增的
*/
|
?
01 02 03 04 05 06 07 08 09 10 11 12 | class LianShou{
public static void main(String[] args)
{
int sum = 0;// 定义sum一定要在for循环外面,因为后面输出sum,
// 不能在for的大括号内,那样输出调用不了sum。
for(int i=1;i<=10;i++)
{
sum += i; // sum = sum + i;
}
System.out.println(sum);
}
}
|
3、需求:
A:求1-100之和。
B:求出1-100之间偶数和
C:求出1-100之间奇数和
[代码]java代码:
?
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | class LianShou{
public static void main(String[] args)
{
int sum1 = 0;
for(int i=1;i<=100;i++)
{
sum1 += i;
}
System.out.println("1=100 的和是:"+sum1); //输出语句要跳出for循环语句,不然会每次i++都会输出一次
int sum2 = 0;
for(int i=1;i<=100;i++)
{
if(i % 2 == 0)
{
sum2 += i;
}
}
System.out.println("1-100 之间的偶数和是:" + sum2);
int sum3 = 0;
for(int i=0;i<=100;i++)
{
if(i % 2 ==1)
{
sum3 += i;
}
}
System.out.println("1-100 之间的奇数和是:" + sum3);
}
}
|
4、求5的阶乘。
什么是阶乘呢?
n! = n*(n-1)! 规则
n! = n*(n-1)*(n-2)*...*3*2*1
[代码]java代码:
?
01 02 03 04 05 06 07 08 09 10 11 12 13 14 | /*
和求1-5的和差不多,只不过是符号改变而已
*/
class LianShou{
public static void main(String[] args)
{
int jc = 1;
for(int i=1;i<=5;i++)
{
jc *= i;
}
System.out.println("1-5 的阶层是:"+jc);
}
}
|
5、需求:在控制台输出所有的”水仙花数”
分析:
所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
举例: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和该数据比较
如果相同,就把该数据在控制台输出。
[代码]java代码:
?
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 | class LianShou{
public static void main(String[] args)
{
for(int i=100;i<=999;i++)
{
int ge = i%10;
int shi = i/10%10;
int bai = i/100%10;
if(i==(ge*ge*ge+shi*shi*shi+bai*bai*bai)) // i == , 两个=
{
System.out.println(" 水仙花数有:"+ i);
}
}
}
}
|
6、需求:统计”水仙花数”共有多少个
分析:
前面部分跟5一样,只不过这里要的是“水仙花数”有几个,
所以每一次计算出水仙花数时,都要定一个变量+1,再到最后输出这个变量
[代码]java代码:
?
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 | class LianShou{
public static void main(String[] args)
{
int count = 0 ;// 计数变量
for(int i=100;i<=999;i++)
{
int ge = i%10;
int shi = i/10%10;
int bai = i/100%10;
if(i==(ge*ge*ge+shi*shi*shi+bai*bai*bai)) // i == , 两个=
{
count ++; // 有一个,就自增1
}
}
System.out.println(" 水仙花数一共有:"+ count +"个");//输出一定要跳出for循环。。
}
}
|
7、需求:请统计1-1000之间同时满足如下条件的数据有多少个:
对3整除余2
对5整除余3
对7整除余2
跟上面6差不多,只不过count++的条件改变成上面那3个
[代码]java代码:
?
01 02 03 04 05 06 07 08 09 10 11 12 13 14 | class LianShou{
public static void main(String[] args)
{
int count = 0;
for(int i=1;i<=1000;i++) // 记得 int
{
if(i%3==2 && i%5==3 && i%7==2)
{
count ++;
}
}
System.out.println("1=1000 同时满足这3个条件的数有:"+count+"个");
}
}
|
原文链接:http://www.apkbus.com/blog-833059-61639.html
打开App,阅读手记