今日内容
零、 复习昨日
一、作业讲解
二、方法[重点]
零、 复习昨日
一、作业讲解
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 设计方法,输出指定次数HelloWorld
public 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 长度