2018.3.27
点菜函数
public class dc { public static void main(String[] args) {
/*
点菜函数
需求模拟用户点菜环境,用户没有选择下单之前,点菜不能停止
while(true)
* */
}
public static void OrderDish() {
//定义变量
int choose = 0;
Scanner sc = new Scanner(System.in);
}
}
函数定义
public class fafa {
public static void main(String[] args) {
printStar();
printword();
//调用一个需要外部传递数据的函数,那么需要给函数提供【实际参数】。
printSumOfTwoNumber(10,15);
//有参数有返回值的函数。
int ret=sub(20,15);
System.out.println("ret="+ret);
}
定义函数的格式:
修饰符 返回值类型 函数名(形式参数列表...) {
函数体
需要被封装的功能代码
}
分析函数:
public static void printStar() {
for(int i=0;i<10;i++) {
System.out.println("*");
}
}
修饰符:public static 不要问为什么
返回值类型:void 表示这里没有返回值
函数名:printStar
作用:1.表示这个函数名字,通过这个名字要告诉使用者,这个函数的功能。
2.当调用函数的时候,就是使用函数名()调用的,函数是条狗,哪里需要哪里吼。
(int n)形式参数的列表,这里要求在调用这个函数时候,外部需要给这个函数传入的参数类型。
{}里面是要封装的功能代码。
函数返回的关键字:
return返回的数据;
返回的数据要和函数声明的返回值一致否则报错。
[注]如果函数的返回值是void,不需要return
如果函数需要return,return之后什么都没有
在函数中如果运行到了return 那么return之后的代码都不会再执行。
函数的调用:
函数调用时候就是使用函数的名字(实际参数)
函数调用的函数经历了什么?
1.代码执行到调用函数的时候
2.会直接跳转的函数的声明部分。
3.给函数中形式参数赋值,并且执行函数里面封装的代码
4.执行完函数里面的代码,遇到函数的return或者函数的大括号
5.回到函数调用 的位置,继续执行之后的代码。
函数到底怎么写?
1.需求分析,分析需要参数吗?(需要外部给我数据?)需要返回值吗?函数的名字怎么起?
2.返回值的类型以及含义
3.思考函数的流程,这里可以用注释的方式写,帮助自己写代码。
4.按照自己的注释,一步一步的写代码
5.测试,不但要测试正确情况,还要考虑错误情况。
函数的注意事项:
1.函数中需要的实际参数,数据类型要和形式参数一一对应。
【发现】int类型的数给double 貌似可以用?
*/
//无参数无返回值。
public static void printStar() {
//这里写函数的功能写在大括号以内
for(int i=0;i<10;i++) {
System.out.println("*");
}
}
public static void printword() {
System.out.println("有惊无险");
}
/*
需要一个方法:计算两个int类型数据的和,并且打印
这里要计算的数据,是函数外面提供的,那么函数需要告诉外部,这里我需要什么类型的数据
(int num1,int num2)这里需要两个参数,两个参数的类型都是int类型,这两个参数是【形式参数】
*/
public static void printSumOfTwoNumber(int num1,int num2) {
System.out.println("num1+num2="+(num1+num2));
}
/*
需求:需要一个获取两个int类型数据相减结果的函数,并且【返回】运算结果
[关键字]return 将函数内部(大括号内部)的数据,返回给函数(大括号外部)外部。
*/
public static int sub(int num1,int num2) {
return num1-num2;
}
}
数据类型转换
public class Function {
public static void main(String[] args) {
printMax(3,2.5);
float num1=3.9999f;
int num2=(int)num1;
System.out.println("num2="+num2);
}
}
//打印两个数之间较大的哪一个?
/* 函数的注意事项:
1.函数中需要的实际参数,数据类型要和形式参数一一对应。
【发现】int类型的数给double 貌似可以用?
补充知识
数据类型转换
自动类型转换
int->short/byte
系统会默认将小数据类型转换成大数据类型
byte->short->int->long->float->double
char->
强制类型转换
eg: double num=3.14;
float num1=3.15f
int num2=(int)num1;
num2=3
浮点型数据强转为整型数据,会默认抹掉小数点后的数据,这里不存在四舍五入
使用强制类型转换,有可能导致精度的丢失,这种丢失必须是你预期以内
因为这种丢失不可逆。
*/
public static void printMax(int num1,double num2) {
if(num1>num2) {
System.out.println("Max:"+num1);
}
else{
System.out.println("Max:"+num2);
}
}
public static String returnRet() {
return 10;
}
}