javase方法

上车Java方法

方法基本点介绍

1. Java方法是语句的集合,组在一起执行一个功能。(封装一段特定功能的代码)
	a. 方法是解决一类问题的步骤的有序集合
	b. 方法包含于类或对象中
	c. 方法在程序中创建,在其他地方被引用
	d. 方法定义在类中
	e. 方法中不能定义方法
2. 设计原则(方法的本义是功能块,就是实现某个功能的语句块的集合)
	a. 原子性:一个方法只完成一个功能(利于后期扩张)
3. 命名规则:小驼峰
4. 格式
	a. 访问权限修饰符  修饰符  返回值类型  方法名(形参列表  参数名){
	            、、、
	             方法体
	            、、、
	            return  返回值;
	    }
		i. 访问权限修饰符:public
		ii. 修饰符:static	
	b. 修饰符:给方法额外增加一种/几种约束
	c. 返回值类型:根据方法的返回值的数据类型,当没有返回值的时候为void
	d. 方法名:标识符(小驼峰)
	e. 形参列表:当方法无法自给自足时,需要外部传入定义的变量
	f. 方法体: 具体实现的功能
	g. 方法的使用:直接调用、对象调用、类调用
	h. 注:实参列表要与形参列表数据类型一致、长度一致、顺序一致。
5. 优点:
	a. 减少代码冗余
	b. 提高复用性
	c. 提高可读性
	d. 提高可维护性
	e. 方便分工合作
	f. 降低代码的 耦合度     
6. return的两种用法:
	a. 返回数据,只能有一个
	b. 结束方法
		i. 对比 
			1) continue:跳过本次循环
			2) break:跳出循环
			3) return:结束方法     

方法重载

1、定义:同一个类中,修饰符一致,返回值一致,方法名相同(形参列表不同)
2、作用:可以在同一类中实现更多的功能,且不违背一个方法实现一个功能的基本原则。

可变长参数

a. 代码

在这里插入图片描述

b. 注:如果有精确的传参方法,先走精确的,没有的话,走可变的传参方法
c. 可变和固定长度参数混合时(一定要指定固定参数)

在这里插入图片描述

	ii. 注意:可变长度参数一定要放在最后的位置,(两个/多个(同型/不同型)可变长度参数,并列放置都不可以)。
	iii. String的format也可以实现

递归

1. 递归可以解决具有既定规律的特定问题
2. 何时使用
	a. 当需要解决的问题可以分成若个小问题,大小问题的解决方法一致相同
	b. 有固定规律,函数中自己调用自己。
3. 如何正确使用递归
	a. 设置有效的出口条件,避免无穷递归。
4. 递归阶乘

在这里插入图片描述

	a. 递进:每一次推进,计算都比上一次简单,直至简单到无需推进,就能获得结果。(也叫:到达出口)。
	b. 回归:基于出口的结果,逐层向上回归,依次计算每一层的结果,直至回归到最顶层。
	c. 注:1的阶乘为1.
	d. 例证
		i. 提出问题

在这里插入图片描述

		ii. 尝试解决问题

在这里插入图片描述

		iii. 解决问题

在这里插入图片描述

	e. 注:所有能以递归解决的问题,循环都能解决。当解决复杂问题的时候,递归的实现方式更为简单。
	f. 四大法则
	    1. 基准情形: 必须有某些基准情形,它无需递归即可解出。
	
	    2. 不断推进: 对于需要递归求解的情形,每次递归调用都必须使得求解状况朝着基准情形推进。
	
	    3. 设计法则: 假设所有的递归调用都能运行。
	
	    4. 合成效益法则:在求解一个问题的同一实例时,切勿在不同的递归调用中做重复性工作。 
	
	g. 函数的总结:

在这里插入图片描述

	h. 拓展:
		斐波那契数列 又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2),即从第三项开始每一项都等于前面两项的和。

综合实例

import java.util.Scanner;

/**
 *用户管理模块 +
 *  登陆
 *  注册
 *  修改密码
 *  共同数据:账号、密码
 * @author xx
 * @date 
 */
@SuppressWarnings("all")
public class UserManagement {
    static String username = "";
    static String password = "";
    static int num = 1;
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (true) {
            System.out.println("***欢迎来访xx***");
            System.out.println("请选择:1、登陆    2、注册    3、修改密码");
            System.out.println("请选择编号:");
            choose(scanner);
        }
    }

    /**
     * 功能选择
     * @param scanner
     */
    public static void choose(Scanner scanner){
        String next = scanner.next();
        switch (next){
            case "1":
                System.out.println("***欢迎登陆***");
                login(scanner);
                break;
                System.out.println("***欢迎注册***");
                registered(scanner);
                break;
            case "3":
                System.out.println("***修改密码***");
                changePassword(scanner);
                break;
        }
    

    /**
     * 登陆
     * @param scanner
     */
    public static void login(Scanner scanner){
        //限制登陆次数
            //提示输入信息
            System.out.println("请输入账号:");
            String trg1 = scanner.next();
            System.out.println("请输入密码:");
            String trg2 = scanner.next();
            if (trg1.equals(username) && trg2.equals(password)){
                System.out.println("登陆成功!");
                //进入计算器中
                //calculator(scanner);
                CalculatorDemo calculatorDemo = new CalculatorDemo();
                CalculatorDemo.calculator(scanner);
            } else {
                System.out.println("账号或密码不一致,登陆失败!");
                System.out.println("请选择是否继续:yes or no");
                String message = scanner.next();
                switch (message){
                    case "yes":
                        login(scanner);
                        break;
                        /*System.out.println("您还有" + (5 - num) + "次机会!");
                        num ++;
                        login(scanner);
                        if (num == 5){
                            System.out.println("登陆次数过多,账号被锁定冻结!");
                            return;
                        }else if (5 - num == 1){
                                System.out.println("!!!当前仅剩最后一次登陆机会,如果忘记密码,请输入Forget!!!");
                                String trg = scanner.next();
                                while (trg.equals("Forget")){
									//这里可以用random
                                    System.out.println("系统将帮您重置密码,请输入验证信息:" + "\n" +"xxxxx:");
                                    String ms = scanner.next();
                                    if (ms.equals("xxxx")){
                                        System.out.println("验证成功!");
                                        System.out.println("请输入密码:");
                                        String str = scanner.next();
                                        System.out.println("请确认密码:");
                                        String str1 = scanner.next();
                                        break;
                                    }else{
                                        System.out.print("信息错误!");
                                    }
                                    return;
                                }
                            }else {
                            return;
                        }
                        break;*/
                    case "no":
                        System.out.println("感谢浏览,再见!");
                        return;
                }
            }
    }

    /**
     * 注册
     * @param scanner
     */
    public static void registered(Scanner scanner){
        //提示输入信息(可以考虑账号以被注册情况)
        System.out.println("请输入账号:");
        String mes1 = scanner.next();
        System.out.println("请输入密码:");
        String mes2 = scanner.next();
        System.out.println("请确认密码:");
        String mes3 = scanner.next();
        if (mes2.equals(mes3)){
            //将注册信息保存,用以验证登陆。
            username = mes1;
            password = mes2;
            System.out.println("注册成功!");
        }else {
            System.out.println("密码不一致,注册失败!");
            System.out.println("请选择是否继续:yes or no");
            String trg = scanner.next();
            switch (trg){
                case "yes":
                    registered(scanner);
                    break;
                case "no":
                    return;
            }
        }
    }

    /**
     * 修改密码
     * @param scanner
     */
    public static void changePassword(Scanner scanner){
        System.out.println("请输入账号:");
        String uname = scanner.next();
        System.out.println("请输入密码:");
        String upass = scanner.next();
        if (uname.equals(username) && upass.equals(password)){
            System.out.println("请输入新密码:");
            String pass1 = scanner.next();
            System.out.println("请确认新密码:");
            String pass2 = scanner.next();
            if (pass1.equals(pass2)) {
                System.out.println("修改成功!");
                password = pass1;
            }else {
                System.out.println("密码不一致,修改失败!");
            }
        }else {
            System.out.println("账号密码不匹配!");
        }
    }

    /**
     * 计算器
     * @param scanner
     */
    /*public static void calculator(Scanner scanner){
        System.out.println("请选择计算方式:+   -   *   /");
        String select = scanner.next();
        switch (select){
            case "+":
                System.out.println("请输入加数:");
                int i = scanner.nextInt();
                System.out.println("请输入被加数:");
                int i1 = scanner.nextInt();
                System.out.println(i + "+" + i1 + "=" + (i + i1));
                break;
            case "-":
                System.out.println("请输入减数:");
                int i2 = scanner.nextInt();
                System.out.println("请输入被减数:");
                int i3 = scanner.nextInt();
                System.out.println(i2 + "-" + i3 + "=" + (i2 + i3));
                break;
            case "*":
                System.out.println("请输入乘数:");
                int i4 = scanner.nextInt();
                System.out.println("请输入被乘数:");
                int i5 = scanner.nextInt();
                System.out.println(i4 + "*" + i5 + "=" + (i4 + i5));
                break;
            case "/":
                System.out.println("请输入除数:");
                int i6 = scanner.nextInt();
                System.out.println("请输入被除数:");
                int i7 = scanner.nextInt();
                System.out.println(i6 + "/" + i7 + "=" + (i6 + i7));
                break;
        }


    }*/

}

计算器类
package cn.wf.method;

import java.util.Scanner;

/**
 *简单的计算器(+、-、*、/)
 * @author xx
 * @date 
 */
@SuppressWarnings("all")
public class CalculatorDemo {
    public static void main(String[] args) {

    }

    public static void calculator(Scanner scanner){
        System.out.println("请选择计算方式:+   -   *   /");
        String select = scanner.next();
        switch (select){
            case "+":
                System.out.println("请输入加数:");
                int i = scanner.nextInt();
                System.out.println("请输入被加数:");
                int i1 = scanner.nextInt();
                System.out.println(i + "+" + i1 + "=" + (i + i1));
                break;
            case "-":
                System.out.println("请输入减数:");
                int i2 = scanner.nextInt();
                System.out.println("请输入被减数:");
                int i3 = scanner.nextInt();
                System.out.println(i2 + "-" + i3 + "=" + (i2 - i3));
                break;
            case "*":
                System.out.println("请输入乘数:");
                int i4 = scanner.nextInt();
                System.out.println("请输入被乘数:");
                int i5 = scanner.nextInt();
                System.out.println(i4 + "*" + i5 + "=" + (i4 * i5));
                break;
            case "/":
                System.out.println("请输入除数:");
                int i6 = scanner.nextInt();
                System.out.println("请输入被除数:");
                int i7 = scanner.nextInt();
                System.out.println(i6 + "/" + i7 + "=" + (i6 / i7));
                break;
        }


    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值