您的位置:首页 > 产品设计 > UI/UE

黑马程序员——break和continue语句+函数+函数重载-第4天

2015-08-05 20:45 429 查看
----------- android培训java培训java学习型技术博客、期待与您交流! ------------
break和continue语句+函数+函数重载

1、break和continue语句

for(int x=0;x<3;x++)
{
system.out.println("x="+x);
break;//跳出for循环。
system.out.println("x="+x);//不执行
}
对比:
for(int x=0;x<3;x++)
{
if(x==1)
break;
system.out.println("x="+x);//x=0时,会执行一次


for(int x=0;x<3;x++)
{
for(int y=0;x<4;y++)
{
system.out.println("x="+x);
break;//打印三次x=,break控制内循环所在的for。即打印一次x=,返回到外循环。
}
}

w:for(int x=0;x<3;x++)//标识号只能用在循环中,起名字,记住就行。w可以用haha代替
{
q:for(int y=0;x<4;y++)
{
system.out.println("x="+x);
break w;//打印一次x=0,break控制外循环w循环所在的for

}

continue:只能作用于循环结构,继续循环。特点:结束本次循环,继续下一次循环。
for(int x=0;x<3;x++)
{
system.out.println("x="+x);
continue;//返回到for循环语句,继续执行x++,感觉是多余的语句。
}
对比:
for(int x=0;x<3;x++)
{
continue;//返回到for循环
system.out.println("x="+x);//不执行,无打印输出。
}

需求:打印1-10中的偶数:
for(int x=0;x<=10;x++)
{
if(x%2==1)//余数为1即为奇数。
continue;//遇到奇数,返回到for循环。
system.out.println("x="+x);//打印1-10中的偶数。
}

w:for(int x=0;x<3;x++)
{
q:for(int y=0;x<4;y++)
{
system.out.println("x="+x);
continue w;//打印三次x=,continue控制w循环所在的for
}
}
记住:
1、break和continue语句作用的范围。
2、break和continue单独存在时,他的后面不可以有任何语句,因为都执行不到。

for(int x=0;x<3;x++)
{
continue;
system.out.println("x="+x);//错误,无法访问语句
}

单独使用break:
break;//错误,在switch或loop外部中断使用。

2、循环语句练习

----*
---* *
--* * *
-* * * *
* * * * *
先打印左边的-。(尖朝下,改变y的初始值)
for(intx=0;x<5;x++)//别忘记说明类型int
{
for(int y=x;y<5;y++)//对比for(int y<x;y<5;y++)这个是错的
{
system.out.print("-");
}
system.out.println();
}//打印:
-----
----
---
--
-
打印组合的图形。
for(int x=0;x<5;x++)
{
for(int y=x;y<5;y++)
{
system.out.print("-");
}
for(int z=0;z<=x;z++)//此处定义一个新的z,而不能投机取巧用y来代替。
{
system.out.print("* ");
}
system.out.println();
}//打印:
-----*
----* *
---* * *
--* * * *
-* * * * *
用空格’ ’代替*。观察变化后的图形。
for(int x=0;x<5;x++)
{
for(int y=x;y<5;y++)
{
system.out.print(" ");
}
for(int z=0;z<=x;z++)
{
system.out.print("* ");
}
system.out.println();
}//打印:
*
**
** *
* ** *
* ** * *
对比发现把每一行的空格减少一个就可以实现图形的功能。怎么实现y减少1呢?
for(int x=0;x<5;x++)
{
for(int y=x+1;y<5;y++)//减少空格的打印行数
{
system.out.print(" ");
}
for(int z=0;z<=x;z++)//需要定义新的变量z,不能借用y变量。
{
system.out.print("* ");
}
system.out.println();
}//打印:
*
**
* **
* ** *
* * * * *
for(int x=0;x<5;x++)
{
for(int y=x+1;y<5;y++)//减少空格的打印行数
{
system.out.print("-");
}
for(int z=0;z<=x;z++)
{
system.out.print("* ");
}
system.out.println();
}///打印:
----*
---* *
--* * *
-* * * *
* * * * *

3、函数概括

函数就是方法,就是具有特定功能的一段小程序
int x=4;
system.out.println(x*3+5);
int x=6;
system.out.println(x*3+5);
//以上的运算,在获取不同数据的运算结果,代码出现了重复。
//为了提高代码的复用率,对代码进行抽取
//将这部分定义成一个独立的功能,方面日后使用。
//java中对功能的定义的是通过函数的形式来体现。

//定义一个整数*3+5的运算;

函数的格式:
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,)

执行语句
return 返回值;

形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数
实际参数:传递给形式参数的具体数据。
return:用于结束函数。
返回值:该值会返回给调用者

//1、先明确函数定义的格式
int x=getResult(4);
system.out.println("x="+x);
int y=getResult(6);//函数可以被重复使用
public static int getRseult(int num)
{
return num * 3 + 5;
}
//函数只有被调用才会被执行

函数没有具体返回值时,返回值类型用关键字void表示,return语句如果在最后一行,可以省略不写
getResult(5);
public static int getRseult(int num)//编译错误
{
system.out.println(num * 3 + 5);//没有具体的返回值
}
对比:
getResult(5);
public static voidgetRseult(intnum)
{
system.out.println(num * 3 + 5);//打印20。没有具体的返回值,可以省略return
}
函数中只能调用函数,不可以在函数内部定义函数。
pubic static void main(sting[],args)
{
public static int getr(int num)
{
return num+4;//错误。在主函数中没有定义功能函数。
}
}

4、函数应用

如何定义一个函数呢?
1、既然函数是一个独立的功能,那么该功能的运算结果是什么先明确
因为这是在明确函数的返回值的类型
2、再明确定义该功能的过程中是否需要未知的内容参与运算
因为这是在明确函数的参数列表

//定义一个功能,完成3+4的运算,并将结果返回给调用者。
1、明确功能的结果:是一个整数的和
2、在实现该功能的过程中,是否有未知内容参会运算,没有。
其实这两个功能就是在明确函数的定义
1、返回值类型
2、明确函数的参数列表(参数的类型和参数的个数)

public static void main(sting[] args)
{
int sum=getsum();
system.out.println("sum="+sum);

public static int gesum()//不需要添加新的参数变量,如(int n)
{
return 3+4;//打印7
}
}
//以上函数的功能,结果是固定的,毫无扩展性而言。

为了方便用户需求,由用户来指定加数和被加数。这样,功能才有意义。
思路:
1、功能结果是一个和,返回值类型是int
2、有未知数参与运算,有两个,这两个未知内容的类型是int
public static void main(sting[] args)
{
int sum=getsum(4,6);
system.out.println("sum="+sum);

public static int gesum(int x,int y)
{
return x+y;
}
}

需求:判断两个数是否相同
思路:
1、明确功能结果:结果是:boolean类型
2、功能是否有未知内容运算。有,两个整数
方法1:
public static booleancompare(int a,int b)//万万没想到,竟然用的是布尔型。!!!
{
if(a==b)
return true;
else
return false;
}
方法2:
public static boolean compare(int a,int b)
{
return (a==b)?true:false;//这里用到了三元运算符
}
方法3:
public static boolean compare(int a,int b)
{
return a==b;//精简版
}

需求:对给定的两个数定义功能,对两个数进行比较,获取较大的数。
方法1:
pubic static int max(int a,int b)
{
if(a>b)
return a;
else
return b;
}
方法2:
pubic static int max(int a,int b)
{
return (a>b)?a:b;
}

system.out.println(get(4,5));//错误,函数void没有具体的返回值,无法打印。
pubic static voidget(inta,int b)
{
system.out.println(a+b);
return;
}
对比:
get(4,5);//打印9。返回语句已经包含打印,直接调用即可。
pubic static void get(int a,int b)
{
system.out.println(a+b);
return;
}

5、函数练习

1、定义一个功能,用于打印矩形。
for(int x=0;x<4;x++)
{
for(int y=0;y<5;y++)
{
system.out.print("*");
}
system.out.println();
}

打印矩形8*9
for(int x=0;x<8;x++)
{
for(int y=0;y<9;y++)
{
system.out.print("*");
}
system.out.println();
}

思路:
1、确定的结果:没有,因为直接打印,返回值类型是void
2、有未知内容吗?有,两个,因为矩形的行和列不确定。
draw(5,6);
pubic static void draw(int row,int col)
{
for(int x=0;x<row;x++)
{
for(int y=0;y<col;y++)
{
system.out.print("*");
}
system.out.println();

}

class Demo
{
for(int x=0;x<3;x++)
{
system.out.println("haha");
}//错误,没有入口,少主函数。
}

定义一个打印99乘法表功能的函数
print99();
public static void print99()//无需内部定义变量
{
for(int x=1;x<=9;x++)
{
for(int y=1;y<=x;y++)
{
system.out.print(y+"*"+x+"="+y*x+"\t");
}
system.out.println();
}

6、函数重载

重载概念:在同一个类中,允许存在一个以上的同名函数,只有它们的参数个数或参数类型不同即可。(同名不同参)
重载只和参数列表有关系。
//什么时候用重载?
当定义的功能相同,但参与运算的未知内容不同。那么这时,就定义一个函数,方便阅读。
定义一个加法运算,获取两个整数的和。
pubic static void main(sting[] args)
{
add(4,5);
add1(4,5,6);//阅读起来不方便,和add的功能相似。
}
public static int add(int x,int y)
{
return x+y;
}
定义一个加法运算,获取三个整数的和。
public static int add1(int x,int y,int z)
{
return x+y+z;
}
对比:
pubic static void main(sting[] args)
{
add(4,5);
add(4,5,6);//利用重载,进行重命名。
}

public static int add(int x,int y)
{
return x+y;
}
定义一个加法运算,获取三个整数的和。
public static int add(int x,int y,int z)
{
return x+y+z;
}
化简如下:
public static int add(int x,int y)
{
return x+y;
}
定义一个加法运算,获取三个整数的和。(嵌套函数的使用,函数中还有函数)
public static int add(int x,int y,int z)
{
return add(x,y)+z;
}

定义一个打印99乘法表功能的函数
print99();
public static void print99()
{
for(int x=1;x<=9;x++)
{
for(int y=1;y<=x;y++)
{
system.out.print(y+"x"+x+"="+y*x+"\t");
}
system.out.println();
}
深化:定义一个打印乘法表功能的函数
print99(4);
public static void print99(int num)//只需一个变量即可。
{
for(int x=1;x<=sum;x++)
{
for(int y=1;y<=x;y++)
{
system.out.print(y+"x"+x+"="+y*x+"\t");
}
system.out.println();
}
简化形式如下:
定义一个打印99乘法表功能的函数
print99();
public static void print99()//再次利用函数的重载
{
print99(9);//调用下面的函数。
}
print99(4);

定义一个打印自定义乘法表功能的函数
public static void print99(int num)
{
for(int x=1;x<=sum;x++)
{
for(int y=1;y<=x;y++)
{
system.out.print(y+"x"+x+"="+y*x+"\t");
}
system.out.println();
}

7、函数重载练习

1、void show(int a,char b,double c){}对比下面函数是否重载:
a、void show(int x,char y,double z){}//没有,和原函数一样
b、int show(int a,double c,char b){}//重载,参数类型不同。注意:重载和返回值类型没关系
c、void show(int a,double c,char b){}//重载,参数类型不同。
d、void show(int c,char b){}//重载,参数个数不同
f、double show(intx,chary,double z){}//没有,这个函数不允许和给定函数同时存在一个类中。因为不确定返回值是double还是void型
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: