D03语句及函数

2.6.3 循环结构
代表结构:while ,do while, for
分别对应的格式是:
while(条件表达式)
{
执行语句;

}


do
{
执行语句;

}while(条件表达式); //无论条件是否满足,循环体至少被执行一次

注:
1.ctr+c强制结束程序运行
2.语句结束,后面要么跟大括号,要么跟分号
3.E.g.
int y=1;
while (y<3); // y<3,满足。后面没有循环体,就会继续回来判断。程序就会停在这里不动。
//下面这些东西叫做内部的独立代码块
{
System.out.println(“y=”+y);
y++;

}


for(初始化表达式;循环条件表达式;循环后的操作表达式)
{
执行语句;
}


E.g.1:
for(int x=0;x<3;x++)
{
System.out.println(“x=”+x);
}
执行流程:
在内存中,分配一个int的空间。判断x<3吗?满足,立刻进去循环体,执行打印操作。此时执行循环后的表达式,再去判断条件是否满足。
所以,初始化表达式只执行一次。条件不满足,for循环结束。

E.g.2:
for(int x=0;x<3;x++)
{
System.out.println(“x=”+x);
}
System.out.println(“x======”+x);
程序报错,这表示变量有自己的作用域。for循环一结束,变量x就没有了!!
for和while可以互换。如果需要定义循环增量,用for更为合适。

总结:什么时候使用循环结构呢?
当要对某些语句执行很多次的时候,就使用循环结构。

D305 循环语句的其他特点
1.
class ForTest
{
public static void main(String[] args)
{
for(System.out.println(“a”);System.out.println(“b”);System.out.println(“c”)) //条件表达式不是真就是假。这里看不出来。报错
{

   System.out.println("d");

}

}

}
所以条件表达式的结果,只能是true/false,其他的都不行

2.
class ForTest
{
public static void main(String[] args)
{ int x=1;
for(System.out.println(“a”);x<3;System.out.println(“c”))
{

   System.out.println("d");
   x++;

}

}

}
该程序结果就是:
a
d
c
d
c
稍微改一下实例2的程序:
class ForTest
{
public static void main(String[] args)
{ int x=1;
for(System.out.println(“a”);x<3;System.out.println(“c”),x++) //多个表达式用逗号隔开
{

   System.out.println("d");
  // x++;

}

}

}
3.格式改写的例子
for(y=0;y<3;y++)
{
}
还可以写成
y=0;
for(;y<3;) //for语句的初始化表达式可以不写,循环后的操作表达式也可以不写,但是这样的话就不如直接写while了
{
y++
}

4.无限循环的最简单表现形式有两种:
for(;;) //对for循环的条件表达式这一块,不写就默认为true
{
}
while(true){}

D306 for语句练习——累加&&计数器
1.获取1~0的和,并打印

class ForTest2
{
public static void main(String[] args)
{
int sum=0;//定义变量用于存储不断变化的和
int x=1; //定义变量,记录住不断变化的被加的数
//定义循环,重复做加法这一过程。
while(x<=10) //循环注意:一定要明确哪些语句需要参与循环,哪些不需要。
{
sum+=x;
x++;
}

System.out.println(“sum=”+sum);

}

用for循环来做:
class ForTest2
{
public static void main(String[] args)
{
sum=0;
for(x=1;x<=10;x++)
{
sum+=x;

}
System.out.println(“sum=”+sum);
}

}
/*
其实这就是累加思想。
原理:通过变量记录住每次变化的结果
通过循环的形式,进行累加动作
*/

2.1~100之间7的倍数的个数,并打印
/*
思路:
(1)先对1~100进行循环(遍历),通过循环的形式
(2)在遍历的过程中定义条件,只对7的倍数进行操作
步骤:
1.定义循环语句,选择for语句
2.在循环中定义一个判断,只要是7的倍数即可,使用if语句 条件:%7==0;
3.定义一个变量,专门放已经出现的7的倍数的个数
*/
int num=0;
for(x=1;x<=100;x++)
{

if(x%7==0)
{
num++;
}

}
System.out.println(“7的倍数的个数是:”+num);
/*
计数器思想。
原理:通过一个变量记录住数据的状态变化
也需要通过循环完成
*/

D307 for嵌套
//语句嵌套形式,其实就是语句中还有语句
//循环嵌套

for(x=0;x<3;x++)
{
for(y=0;y<4;y++)
{
System.out.println(“ok”); //程序最终会打印12个ok,也就是外循环乘以内循环(x=0、1、2;y=0、1、2、3)

}

}
稍微做一下改动:
for(int x=0;x<3;x++)//注意这里,第一个初始化表达式也需要说清楚,初始化的x的数据类型,否则会报错!!!
{
for(int y=0;y<4;y++)
{
System.out.println(“*”);
}
System.out.println(); //只有一个功能就是换行
}
/*
这时打印输出结果就是:
//(1)**
//(2)**
//(3)**
对于打印长方形,外循环控制行数,内循环控制列数,也就是每一行中的元素的个数
*/

Q:现在如果我们要打印
//*****
//****
//***
//**
//*
形如上图,怎么做呢?
思考:发现图像有好多行,每一行有很多列。所以要使用嵌套循环,形象说法:大圈套小圈。
public class test2
{

for(int x=0;x<5;x++)   //x<5:外循环控制行,此时行数是固定的5行。
{
    for(int y=x;y<5;y++)      //这里y<的数不写常量,直接写
    {
        System.out.print("*");   //每一行的*的数目都在变化,所以是不是应该用一个变量记录


    }
    System.out.println();//换行

}

}
2018.5.28

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值