------- android培训、java培训、期待与您交流! ----------
class fortest // 认识for语句的详细运算过程 及实际应用练习
{
public static void main(String[] args)
{
int m=1;//don't forget!!
for (System.out.println("a");m<3;System.out.println("c"))
{
System.out.println("d");
m++;
}
/* 输出结果为 a d c d c 可见 for的初始化表达式不一定非是基本的数据类型int
只要是合法的表达式都可以 注意如果需要多表达式 用,分隔开就行 例如 :
for (System.out.println("a");m<3;System.out.println("c"),x++)
for (int m=0,y=1,z=2; m<3; m++,y++,z++)
*/
for (int y=0;y <3;y++)
{
}
//也可以写成下面格式 为什下面也可以定义y 是因为上面的y只在for里有效
int y=2;//不要丢!!!!
for ( ;y<3;)
{
y++;
}
/*
无限循环的最简单表现形式:
for ( ; ; ) {}
while (true){}
此二者可能为简单的面试题
*/
//练习一:获取1~10的和并且打印
/*
思路:
0+1
1+2
3+3
6+4
10+5
15+6
21+7
28+8
36+9
45+10
//这是计算机内的计算过程 也是写代码的思路
*/
//使用while语句
//1 定义变量 用于存储不断变化的和
int sum1=0;
//2 定义变量 用于记录住(存储起来)不断变化的被加的数
int n=1;
//3 定义循环 重复加法的过程
while (n<=10)//题目要求计算1~10的和 已定义变量n 所以这里应为n<=10
{
sum1 = sum1+n;
n++;
}
System.out.println("sum1="+sum1);
//一定要明确哪些语句需要参与循环,哪些不需要。直接在大括号外边打印一次就行
/* 利用for语句
int sum=0;//sum应该定义在外边 因为是用循环来操作sum
for ( int x=1;x<=10;x++)
{
sum =sum+x;//也可以写成老师的sum+=x;
System.out.println("sum="+sum);
}
若将执行语句 System.out.println("sum="+sum);写在sum=sum+x前面的话
结果为45
分析过程 提高对for循环运算步骤的认识程度 如下:
1.经过x=1(初始化表达式 只执行一次) -->x<=10(循环条件表达式)
-->sum=0(执行语句) -->sum=sum+x(下边有)=0+1=1 //一次循环结束
2.x++=1+1=2(循环后的操作表达式) -->x<=10(循环条件表达式)
-->sum=1(执行语句) -->sum=sum+x=1+2=3 //x++开始执行,二次循环结束
3.x++=2+1=3(循环后的操作表达式)-->x<=10(循环条件表达式)
-->sum=3(执行语句) -->sum=sum+x=3+3=6 //三次循环结束
4.x++=3+1=4(循环后的操作表达式)-->x<=10(循环条件表达式)
-->sum=6(执行语句) -->sum=sum+x=6+4=10 //三次循环结束
.
.
.
.
10.x++=9+1=10(循环后的操作表达式)-->x<=10(循环条件表达式)
-->sum=45(执行语句) -->sum=sum+x=45+10=55 //十次循环结束
//但是十次循环完成后 计算机在下一次运算时 就会将x=10 自增1 即x=11肯
定不会满足x<=10(循环条件表达式)的条件 即sum=55是不会被执行语句显示的
只有将sum=sum+x;写在System.out.println("sum="+sum);前面 才能让第一次
循环执行语句结果为1 10次循环后结果为55
//注意 以上结果都是每循环一次就打印一次结果 其实一定要明确哪些语句需要
参与循环 哪些不需要 只有sum=sum+x 是需要不断参与循环 影响最后结果的
而执行语句 直接在大括号外边打印一次就可以 就是最后的结果 如下:
PS:发现一使用上箭头两次就可调出上上次的命令 次数越多就越靠前
*/
int sum=0;
for ( int x=1;x<=10;x++)
{
sum+=x;
}
System.out.println("sum="+sum);// 结果为55
/*
总结: 其实上述就是累加思想的体现
原理:通过变量记录住循环操作后的结果 通过循环实现累加动作 比如一个数
不断地变大或者不断地变小 以及字符串的不断延长 为记录住不断变化
的结果 通常都视为累加
*/
// 计算1~100以内所有偶数的和 注意应该先定义什么 !!!!!!!!!!
int sum2=0;//应该先定义sum放在外边 因为是用循环来操作sum !!!!!!!!!!!!
for(int k=1 ;k<=100;k++)
{
if (k%2==0)
{
sum2+=k;
}
}
System.out.println("sum2="+sum2);
//练习二:获得1~100之间 7的倍数的个数。并打印。
/* 思路: 以后都得这么写
1.通过循环的形式 先对100以内的数进行遍历(循环)
2.在遍历的过程中 定义条件 只对7的倍数进行操作
//注意老师的思维很严密 在哪里干什么 而不是直接干什么 自己想写的是
定义7的倍数 打印(不定义条件 如何打印??) 思路想到一部分 先写下
步骤 再考虑别的问题 (诸如本题的个数)
3.完成前两步后 联想用正字计数的方法 因为7的倍数不确定 所以定义一个变量
用来记录每一个7的倍数
步骤:1.定义循环语句 选择for语句(与while相比 节省内存)
// 不能直接写使用for语句
2.在循环中定义一个判断 只要是7的倍数即可 使用if语句 条件是7的倍数
其实就是变量模以7结果为0(z%7=0)//开始写
3.定义一个变量 这个变量随着7的出现而自增 //重要
*/
int count=0;
for (int z=1; z<=100 ;z++)//注意是自增++ 不是=++
{
if(z%7==0)/*注意 不是= 而是==(比较运算符)否则程序不会判断
结果是否正确*/
{
count++;
//System.out.println("z="+z);
}
}
System.out.println("count="+count);
//直接写在外边即可 否则又会出现循环的多次显示结果
/*
总结:计数器思想(类似于累加)
通过一个变量记录住数据的状态变化(本题为z%7)
也是通过循环完成变化过程
以后遇到某一范围里符合条件的需求数量的问题时 首先要想到计数器思想
*/
System.out.println("Hello World!");
}
}