/*
1.循环结构:
在程序中有一些代码段需要重复执行,假如没有循环结构,
就需要重复写代码。
将来把需要反复执行的代码片段放到"循环",再联合计数器,共同控制这段需要反复执行的代码。
2.for循环
语法结构:
for(初始表达式;1布尔表达式;3更新表达式){
2需要重复执行的代码段【也叫做循环体】
}
3.for循环的执行原理:*****
1.初始化表达式、布尔表达式、更新表达式都不是必须的!【但是两个分号是必须的】
2.初始化表达式最先执行,并且在整个for循环中只执行一次。
3.布尔表达式必须是true/false,不能是其它值。
4.for循环的执行过程:
*先执行初始化表达式,并且该表达式只执行一次
*判断布尔表达式的结果是true还是false
-布尔表达式为true
*执行循环体
*执行更新表达式
*再次判断布尔表达式的结果是true还是false
-布尔表达式为true
*继续......
-布尔表达式为false
*循环结束
-布尔表达式为false
*循环结束
4.什么是死循环
布尔表达式写成true就是死循环*/
public class for01
{
public static void main(String[] args)
{
//循环输出1-10
//以下的for循环中"i"变量的作用域是仅限于当前for循环内部使用
for(int i=1;i<=10;i=i+1){
System.out.println(i);
}
//以下的for循环中"i"变量的作用域是仅限于当前for循环内部使用
for(int i=1;i<=10;i+=1){
System.out.println(i);
}
//以下的for循环中"i"变量的作用域是仅限于当前for循环内部使用
for(int i=1;i<=10;i++){
System.out.println(i);
}
//这个i变量可以在main方法的作用域中访问吗?无法访问
//System.out.println("i="+i);编译错误,无法找到定义域
//死循环
for(;;){
System.out.println("死循环");
}
//以下演示i变量作为全作用域使用
//作用在main方法内的i变量。只要main方法没有结束,这里的i就能用
int i=1;
for(;i<=10;i++){
System.out.println(i);//编译成功输出
}
//先声明后赋值也可以
int i;
for(i=1;i<=10;i++){
System.out.println(i);//编译成功输出
}
//i--
for(int i=10;i>=0;i--){
System.out.println(i);
}
//计数器,注意位置的变换
for(int i=0;i<10;){
System.out.println("计数器="+i);
i++; //输出1-9
}
for(int i=0;i<10;){
i++;
System.out.println("计数器="+i);
//输出1-10
}
//循环语句和条件判断语句的使用【for和if的嵌套】
//需求:找出1-100的所有奇数
//方案一:从1开始,每次递增2,这样每一个数字一定是奇数(优选)
for(int i=1;i<=100;i+=2){
System.out.println("1-100的奇数="+i);
}
//方案二:从1开始,以1递增,每一个数据都进行判断,该数字对2求余数
for(int i=1;i<=100;i++){
//先把1-100循环输出,然后再进行if判断
if(i % 2!==0){//i%2==1作用一样
System.out.println("1-100的奇数="+i);
}
}
/*
在前面一个程序的基础上,计算1-100所有奇数的和
1+3+5+7+9......
运算符+= 就是专门完成追加的。
所以需要容器来装加进去的数
容器+=i;
*/
int sum=0;//呼应下面的正确定义域,在方法外部定义容器,不然容器进入循环体后会清零
for(int 1;i<=100;i+=2)
{
//定义一个变量【容器】
//以下是错误示例,因为sum为局部变量,循环的时候会清零sum=0
//int sum=0;
//sum+=i;
//以下是正确定义域,定义域在方法体外部
sum+=i;
//输出语句放在这里表示每循环一次则输出一个数据
System.out.println("sum="+sum);
}
//输出语句放在这里表示,for循环结束后,最终输出求和的结果
System.out.println("sum="+sum);
//------------------------------------
//for循环嵌套for循环
//嵌套的for也是符合java语法的代码
//内层循环中的变量名和外层循环的变量名不能重名
for(int i=0;i<=10;i++)
{
/* for(int i=100;;)//仔细观察这个for循环体是在第一个大for循环体的内部,重定义了变量i,所以报错
{
}
*/
//这里是循环体,无论是什么样的代码,都要执行10遍
for(int j=0;j<3;j++)
{
System.out.println("j="+j);//输出结果是输出10次/0 1 2/012/012 ....
}
}
//下面是更加直观的嵌套演示
for(int i=1;i<=5;i++)
{
System.out.println("begin");
for(int j=1;j<=5;j++)
{
System.out.println(i*j);
}
System.out.println("end");
}
//结果:
/*
begin
1*1
1*2
1*3
1*4
1*5
end
begin
2*1
2*2
2*3
2*4
2*5
end
begin
3*1
3*2
3*3
3*4
3*5
end
begin
4*1
4*2
4*3
4*4
4*5
end
begin
5*1
5*2
5*3
5*4
5*5
end
*/
//99乘法表
for(int i=1;i<=9;i++)
{
for(int j=1;j<=i;j++)
{
System.out.println(i+"+"+j+"="i*j+"\t");
}
}
}
}