黑马程序员_for循环和函数

时间:2023-02-19 17:32:50


------- 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