今日内容
零、 复习昨日
一、作业讲解
二、方法[重点]
零、 复习昨日
一、作业讲解
package com.qf.homework;import java.util.Scanner;/*** @desc*/
public class Homework {public static void main(String[] args) {/*** --------------------* 边写边测试* 以结果倒推* 缺什么语句加什么语句* 不要怕错,读代码* --------------------* ATM机账户,登录* ps: 假设666666* 1) 最多允许输错5次* 2) 在5次内有一次正确,就可以登录成功,程序结束* 3) 如果输错,要给出提示语* ----------------------------------* ps: 可以带入产品经理角色,设计更人性的提示*/Scanner scanner = new Scanner(System.in);System.out.println("--- 欢迎使用天地银行 ---" );System.out.println( );for (int i = 1; i < 6; i++) {System.out.println("请输入密码: (ps: 最多5次机会)" );System.out.print("第"+i+"次密码输入: " );int password = scanner.nextInt();if (password == 666666) {System.out.println("密码正确,欢迎进入~" );break;}if (i != 5){System.out.println("密码错误,请重新输入" );}else {System.out.println("输错5次,卡已锁死" );}}}
}
字符串拼接技巧
public static void main(String[] args) {int age = 18;String name = "老王";String address = "航海路60号";char sex = '男';String phone = "18599991345";// 把变量组成一句话输出/*** 字符串拼接技巧* 1) 先把完整句子写完* 2) 口诀"选中x,引号引号加号加号中间变量"*/System.out.println("我叫"+name+",今年"+age+"岁,性别是"+sex+",家住:"+address+",电话是:"+phone+"" );}
二、方法
方法(method),又叫函数,一段代码块,执行并完成某个功能.
2.1 为什么需要方法
问题
- 目前写练习/作业 一个题新建一个类,或者一个题写完就注释,这样不专业
- 代码重复性高,冗余
使用方法解决以上问题
- 方法是一个独立代码块
- 将功能代码写在方法内,可以实现复用–> 如果需要使用就调用方法
2.2 方法的定义
// 主方法就是方法
public static void main(String[] args){ }
/*
public 公共的,是java修饰符,暂时没什么用,目前就是固定,每个方法必写
static 静态的,是java修饰符,暂时没什么用,目前就是固定,每个方法必写
第三个位置: 写方法的返回值数据类型什么叫返回值?就是方法执行完返回的一个数据void是指方法没有返回值,void单词意思是空如果需要返回,此处就写数据类型,例如int,double,String等等但是,如果需要范围,还需要在方法内加return关键词
第四个位置: 方法名,见名知意定义,首字母小写,其他单词大写例如: loginByUsernameAndPassword,createHealthCode
() : 方法参数列表参数: 就是方法执行需要的数据,但是需要想变量一样声明,多个参数逗号隔开当然也可以没有参数例如 open(),loginByUsernameAndPassword(String username,String password)add(int x,int y)
{} : 方法体,方法的主要内容写在里面
*/
方法执行
- java程序只有一个唯一入口就是主方法
- 即自定义方法需要被主方法调用
- 如果调用
- 方法名();
- 方法名(实参);
2.3 方法演示 [重点]
2.3.1 无参无返回值
// 定义无参无返回值方法
public static void test(){System.out.println("无参无返回值");
}
// 在主方法调用
public static void main(String[] args) {// 使用方法名调用test();
}
特别注意:
- 方法是定义类中
- 类中可以定义很多方法
- 方法不能嵌套,所有方法是平级关系,上下无所谓
- 因为不管方法定义在哪里,只能被主方法内调用去执行
- 回忆: 代码执行顺序是在主方法内从上至下一次逐行执行
练习:
设计方法输出1-10 ,
输出1-100的和,
输出乘法口诀表
// 在主方法调用public static void main(String[] args) {// 使用方法名调用printOne2Ten();System.out.println("----" );printOne2HundredSum();System.out.println("----" );print99();} public static void printOne2Ten(){for (int i = 1;i < 11;i++) {System.out.println(i);}}public static void printOne2HundredSum(){int sum = 0;for (int i = 1;i < 101;i++) {sum += i;}System.out.println("1-100和和 sum = " + sum);}public static void print99(){for (int i = 1;i < 10;i++) {for (int j = 1;j <= i;j++) {System.out.print(j+" * "+i+" = "+(i*j)+"\t");}System.out.println();}}
2.3.2 有参无返回值
参数: 就是方法执行所需要的数据
好处: 设计参数可以让方法更灵活多变
写法: 在参数列表()内声明变量
1.设计一个方法,输出从1到指定数
public static void main(String[] args) {printNum(100);// 10就是实际参数,给方法n赋值//int n = 10;System.out.println("----------" );int a = 100;printNum(a);// int a = 10;// int b = a;}// 1.设计一个方法,输出从1到指定数// 此处int n就是参数,即变量,形式参数,简称形参public static void printNum(int n) {for (int i = 1; i <= n; i++) {System.out.println(i );}}
2 设计方法,计算1到指定数据的和
3 设计方法,输出指定次数HelloWorld
4 设计方法,输出指定行数的直角三角形
public static void main(String[] args) {/*** 调用有参数的方法,必须传入参数,即一个值* 调用方法传参数其实就是变量赋值*/printSum(100);System.out.println("----- 分割线 -----");printHelloWorld(10);System.out.println("----- 分割线 -----");printReact(5,20);System.out.println("----- 分割线 -----");printTriangle(10);}// 2 设计方法,计算1到指定数据的和public static void printSum(int x) {int sum = 0;for (int i = 1; i <= x; i++) {sum += i;}System.out.println("sum = " + sum );}// 3 设计方法,输出指定次数HelloWorldpublic static void printHelloWorld(int x) {for (int i = 1; i <= x; i++) {System.out.println("HelloWorld" );}}// 4 设计方法,输出指定行数列数的矩形(外层循环控制行数,内层循环控制列数)// line行,column列 public static void printReact(int line,int column){for (int i = 1; i <= line; i++) {for (int j = 1; j <= column; j++) {System.out.print("*" );}System.out.println( );}}// 4 设计方法,输出指定行数的直角三角形public static void printTriangle(int line){for (int i = 1; i <= line; i++) {for (int j = 1; j <= i; j++) {System.out.print("*" );}System.out.println( );}}
5 设计方法,传入两个字符串,将其拼接后输出
public static void concatString(String s1,String s2){System.out.println(s1 + "-" + s2);
}
6 设计方法,传入两个数字,输出相加的和
public static void add(int a,int b){System.out.println(a + b);
}
关于设计方法参数总结:
- 按照需求设置合理的参数(数据类型,个数)
- 调用带参数的方法时传入合理的数据
2.3.3 有参有返回值
返回值: 方法执行完返回给调用者的数据
// 语法
// 方法有返回值,那么方法定义就不能写void,而是写对应的返回值的数据类型
// 其次,方法体内需要使用return+值;来真正完成返回数据public static String test(){return "xxx";}public static int test2() {return 1;}
1 设计方法,模拟加法运算,传入两个参数,计算数据之和后返回数据
public static void main(String[] args) {int sum = add(2,3);System.out.println(sum );}// 设计方法,模拟加法运算,传入两个参数,计算数据之和并返回public static int add(int a,int b) {int sum = a + b;return sum;}
2.计算1到指定数据的和,并将结果返回
// 计算1到指定数据的和,并将结果返回public static int sum(int x) {int sum = 0;for (int i = 1; i <= x; i++) {sum += i;}return sum;}public static void main(String[] args) { int result = sum(100);System.out.println(result );}
3 写一个方法,参数是圆形的半径,返回其面积(π=3.14)(π*r^2)
package com.qf.method;/*** @desc 返回值*/
public class Demo3 {public static void main(String[] args) {double area = getArea(10);System.out.println("面积是:" + area );}// 写一个方法,参数是圆形的半径,返回其面积(π=3.14)(π*r^2)public static double getArea(double r) {return 3.14 * r * r;}
}
2.3.4 方法之间相互调用
package com.qf.method;/*** @desc*/
public class Demo4 {// 主方法是老板,发出命令public static void main(String[] args) {jingli();}/*** 方法之间是可以相互调用的*/public static void jingli(){System.out.println("经理()" );zuzhang();}public static void zuzhang(){System.out.println("组长()" );xiaobing();}public static void xiaobing(){System.out.println("小兵()" );}
}
2.3.5 返回值返回给调用者
返回值返回给调用者
package com.qf.method;/*** @desc*/
public class Demo4 {// 主方法是老板,发出命令public static void main(String[] args) {String jieguo = jingli();System.out.println(jieguo );}/*** 方法之间是可以相互调用的*/public static String jingli(){System.out.println("经理()" );String jieguo = zuzhang();System.out.println("经理拿到结果:"+jieguo );return "经理包装"+jieguo;}public static String zuzhang(){System.out.println("组长()" );String jieguo = xiaobing();System.out.println("组长拿到结果:" + jieguo );return "组长包装:"+jieguo;}public static String xiaobing(){System.out.println("小兵()" );return "小兵做的报告";}
}
2.4 总结&注意事项
- 方法定义不能嵌套定义,平级定义
- 任何方法都需要在主方法中调用才能执行
- 方法可以重复使用,即重复调用
- 方法可以互相调用,但是不能调用主方法
- 方法在类中的上下顺序是随意的
- 写题技巧
- 先写最简单的方法,即无参无返回值
- 再根据题意,设计合适的参数
- 再根据题意,要不要设计返回值,如果要返回值就设计return,改void为指定类型
三、Debug
debug就是调试程序
打断点
左侧行号打断点
debug运行
单步调试
附录
password , pwd 密码
username , 用户名
method 方法
function 函数
line 行
column 列
area 面积
length 长度