------- android培训、java培训、期待与您交流!----------
for循环的使用
为什么要出现for循环?
当我们要打印很多数或者要重复的执行某一些代码时,就要用到循环的方式去实现它,而for循环无疑是其中一种好办法,它给我们提供了
一种重复执行某一动作的方法
for循环的书写格式:
for(变量 ; 表达式 ;表达式)
for循环的执行步骤:
例子:for(intx=0;x<=100;x++)
{
System.out.println(x);
}
一开始先初始化x,判断x<=100,满足条件就执行System.out.println(x); 如果不满足条件,直接跳出for循环 然后执行x++
注意:x=0这句代码只有第一次进来的时候执行
1 用for循环打印图形的分析
1)对于打印长方形,外循环控制的是行数,内循环控制的是每一行的列数。也就是一行中的个数
例子:打印以下图形的分析
******
******
******
行数是3,列数是6个*
那么我么可以定义一个外循环,循环次数为3次
for(int x=0;x<3;x++)
同时我们也要定义一个内循环,一次就打印6个* ,循环次数是6次,一次打印一个*
for(int y=0;y<6;y++)
{
System.out.print("*");
}
注意外循环执行完一次,那么就在屏幕上打印了这个图形****** ,要换行操作,不然会连续在同一行打印出来
System.out.println();
/* 例子1:打印长方形 */ class ChangF { public static void main(String[] args) { for(int x=0;x<3;x++) { for(int y=0;y<6;y++) { System.out.print("*"); } System.out.println(); } } }
2)在控制台上打印以下图形
******
*****
****
***
**
*
分析:
图形有6行,所以外循环是6次 for(int x=0;x<6;++)
图形第一行有6列,第二行有5列,第三行有4列,第四行有3列,第五行有2列
从长方形例子可以得知,我们要再定义一个内循环,但是打印图形是递减的,怎么办呢?
外循环执行第一次的时候,内循环就打印了6个*
内循环打印6个*的代码是
for(int y=6;y>0;y--)
{
System.out.print("*");
}
内循环打印5个*的代码是
for(int y=5;y>0;y--)
{
System.out.print("*");
}
内循环打印4个*的代码是
for(int y=4;y>0;y--)
{
System.out.print("*");
}
.....
由上面可以看出,只有y的初始化值在不断变化,而且是外循环执行一次,就减一
所以得到内循环:
for(int y=6-x;x>0;x++)
{
System.out.print("*");
}
外循环执行一次就换行:
System.out.println();
/* 例子2的代码 */ class ForTest4 { public static void main(String[] args) { for(int x=0;x>6;x++) { for(int y=6-x;x>0;x++) { System.out.print("*"); } System.out.println(); } } }
3)在控制台上打印以下图形
*
**
***
****
*****
分析:
行数是5行,外循环次数为5次,外循环表达式:for(int x=0;x<5;x++)
第一次执行外循环,内循环就打印一个* ,
for(int y=0;y<1;y++)
{
System.out.print("*");
}
第一次执行外循环,内循环就打印两个* ,
for(int y=0;y<2;y++)
{
System.out.print("*");
}
第一次执行外循环,内循环就打印三个* ,
for(int y=0;y<3;y++)
{
System.out.print("*");
}
由上面分析可以得知,表达式随着外循环次数的变化而变化,不难推断表达式是,y<x+1
定义内循环
第一次执行外循环,内循环就打印一个* ,
for(int y=0;y<x+1;y++)
{
System.out.print("*");
}
外循环执行完一次,程序要做换行操作
System.out.println();
/* 例子3代码 */ class ForTest3 { public static void main(String[] args) { for(int x=0;x>5;x++) { for(int y=0;xy<x+1;y++) { System.out.print("*"); } System.out.println(); } } }
由以上三个例子得出总结:
尖朝上,可以改变条件,让条件随着外循环变化
尖朝下,可以改变初始化值,让初始化随着外循环变化
4) 在控制台上打印以下图形
*
* *
* * *
* * * *
* * * * *
分析:
图形等效于
----*
---* *
--* * *
-* * * *
* * * * *
其实这是一个5行5列的图形,因为行数决定外循环,列数决定内循环所以可以初步写出for循环的框架
for(int x=1;x<=5;x++)
{
for(int y=1;y<=5;y++){}
}
打印两个图形: "-" 和"*"+""
外循环决定图形行数,有5行:
for(x=1;x<=5;x++)
假设内循环变量为y:
当外循环x=1时,y=1,2,3,4的时候就打印"-" 当y=5的时候就打印"*"+" " y>=5-1+1
当外循环x=2时,y=1,2,3的时候就打印"-" 当y=4,5的时候就打印"*"+" " y>=5-2+1
当外循环x=3时,y=1,2的时候就打印"-" 当y=3,4,5的时候就打印"*"+" " y>=5-3+1
当外循环x=4时,y=1时候就打印"-" 当y=2,3,4,5的时候就打印"-"+" " y>=5-4+1
当外循环x=5时,不打印"-" 当y=1,2,3,4,5时候打印"-"+" " y>=5-5+1
由上面可以推出:
内循环判断条件
当y>=5-x+1 时, 就打印"*"+" " 否则就打印的时候就打印"-"
所以得出内循环
for(int y=0;y<5;y++)
{
if(y>=5-x)
System.out.print("*"+" ");
else
System.out.print(" ");
}
/* 例子三代码 */ class ForTest3 { public static void main(String[] args) { for(int x=1;x<=5;x++) { for(int y=1;y<=5;y++) { if(y>=5-x+1) System.out.print("*"+" "); else System.out.print(" "); } System.out.println(); } } }
2 无限循环的最简单表现形式。(不写条件,默认为true) 面试可能会问到
for(;;){}
while(true){}
3 累加思想。
原理:通过变量记录住每次变化的结果。
通过循环的形式,进行累加动作。
4 计数器思想。
通过一个变量记录住数据的状态变化
也要通过循环完成。
5 制表符:\t 九九乘法表时候用到
例子:写个九九乘法表的程序
分析:
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 *3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=205*5=25
......
发现这个形状是一个图形,
行数是9,列数也是9, 像个长方形,所以要用两个for循环表示
可以得出for循环的初始形式
for(int x=1;x<=9;x++)
{
for(int y=1;y<=9;y++)
{
}
}
当x=1时,y=1,乘法表的内容是 1*1=1;
当x=2时,y=2乘法表的内容是 2*1=2 2*2=4
当x=3时,y=3,乘法表的内容是 3*1=3 3*2=6 *3=9
......
不难看出内循环每次要输出的语句是:x+"*"+y+"="+(y*x)+""
为了对齐输出的语句,在后面加上制表符\t: x+"*"+y+"="+(y*x)+""+"\t"
外循环执行完一次,就换行一次
System.out.println()
/* 这是一个九九乘法表的程序 1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 *3=9 4*1=4 4*2=8 4*3=12 4*4=16 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 ...... */ class JiuJiu { public static void main(String[] args) { for(int x=1;x<=9;x++) { for(int y=1;y<=x;y++) { System.out.print(x+"*"+y+"="+(y*x)+" "+"\t"); } System.out.println(); } } }
6 break:跳出循环
w:for(intx=0;x<3;x++)
标号为w break:w表示跳出以上循环语句
7 continue:只能用于循环结构,结束本次循环,继续下一次循环
for(intx=0;x<3;x++)
{
//continue表示当x=0读了continue,就返回x++,判断x<3,再读continue,再x++
所以continue下面的语句读不到
contiune;
System.out.print(x);
}
8 break和continue单独存在时,下面可以有任何语句,因为都执行不到
break和continue都有作用的范围
9 函数的定义:
为什么会出现函数?
就像一个人,有自己的属性和行为动作,
java里面也有自己的属性和行为动作,这个行为动作就是函数或者叫做方法
我们定义一个类,那么我们肯定是让这个类有某一些功能,这时候我们就要定义函数了
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数1。。)
{
执行语句;
return 返回值;
}
如果函数没有返回值,return语句可以省略
10注意
明确返回值类型
明确函数的参数列表:参数类型和参数的个数
11 同一个类中,允许存在一个以上的同名函数,只要他们的参数个数和参数类型不同即可
12什么时候用重载
当函数功能相同,但是参数列表不同,为了方便阅读,这时就用到重载
注意:重载和返回值类型没关系,就算返回值类型不一样但是函数名一样,参数列 表不相同,函数就重载了
例子:
public staticint add(int a ,int b)
returna+b;
public staticint add(int a ,int b,int c)
returna+b+c;
------- android培训、java培训、期待与您交流!----------
当外循环x=5时,y=0,1,2,3的时候就打印"-" 当y=4的时候就打印"*"+" " y>=5-1
当外循环x=4时,y=0,1,2,的时候就打印"-" 当y=3,4的时候就打印"*"+" " y>=5-2
当外循环x=3时,y=0,1的时候就打印"-" 当y=2,3,4的时候就打印"*"+" " y>=5-3当外循环x=2时,y=0的时候就打印"-" 当y=1,2,34的时候就打印"*"+" " y>=5-4
当外循环x=1时, 不打印"-" 当y=0,1,2,344的时候就打印"*"+" " y>=5-5