day07_方法

今日内容

零、 复习昨日
一、作业讲解
二、方法[重点]

零、 复习昨日

一、作业讲解

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)
{} : 方法体,方法的主要内容写在里面           
*/

day07_方法_第1张图片

方法执行

  • java程序只有一个唯一入口就是主方法
  • 即自定义方法需要被主方法调用
  • 如果调用
    • 方法名();
    • 方法名(实参);

2.3 方法演示 [重点]

2.3.1 无参无返回值

// 定义无参无返回值方法
public static void test(){
    System.out.println("无参无返回值");
}
// 在主方法调用
public static void main(String[] args) {
    // 使用方法名调用
    test();
}

特别注意:

  • 方法是定义类中
  • 类中可以定义很多方法
  • 方法不能嵌套,所有方法是平级关系,上下无所谓
  • 因为不管方法定义在哪里,只能被主方法内调用去执行
    • 回忆: 代码执行顺序是在主方法内从上至下一次逐行执行

day07_方法_第2张图片

练习:

设计方法输出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 );
        }
    }

day07_方法_第3张图片

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

day07_方法_第4张图片

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 "小兵做的报告";
    }
}

image-20230718083149281

2.4 总结&注意事项

  1. 方法定义不能嵌套定义,平级定义
  2. 任何方法都需要在主方法中调用才能执行
  3. 方法可以重复使用,即重复调用
  4. 方法可以互相调用,但是不能调用主方法
  5. 方法在类中的上下顺序是随意的
  6. 写题技巧
    1. 先写最简单的方法,即无参无返回值
    2. 再根据题意,设计合适的参数
    3. 再根据题意,要不要设计返回值,如果要返回值就设计return,改void为指定类型

三、Debug

debug就是调试程序

  • 打断点

    • 左侧行号打断点

      day07_方法_第5张图片

  • debug运行

    • day07_方法_第6张图片
  • 单步调试

    day07_方法_第7张图片

附录

password , pwd 密码

username , 用户名

method 方法

function 函数

line 行

column 列

area 面积

length 长度

你可能感兴趣的:(#,Java2313,python,开发语言)