Java方法

Java方法

1. 什么是方法?

Java方法是语句的集合,它们在一起执行一个功能。
类似于其他语言的函数

  • 方法是解决一类问题的步骤的有序组合。
  • 方法包含于类或对象中。
  • 方法在程序中被创建,在其他地方被引用。

2. 方法的定义

方法包括一个方法头和一个方法体。下面是一个方法的所有部分:

修饰符 返回值类型 方法名(参数类型 参数名) {
	……
	方法体
	……
	return 返回值;
}
  • 修饰符(可选): 告诉编译器如何调用该方法,定义了该方法的访问类型。
  • 返回值类型:方法可能会返回值,无返回值的情况用void
  • 方法名:是方法的实际名称。方法名和参数表共同构成方法签名。在Java中,方法名可以和变量名相同
  • 参数类型(可选):参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。
    • 形参:在方法调用时用于接收外界输入的数据。
    • 实参:调用方法时实际传给方法的数据。
  • 方法体:方法体包含具体的语句,定义该方法的功能。

3. 方法的重载

如果两个方法的方法名相同而参数不同,这种情况叫做方法的重载。
注意:

  • 不能存在两个方法名和参数完全相同的方法!
  • 在调用重载的方法时,会根据你传入的实参类型来确定调用哪个方法。
  • 方法的返回类型可以相同可以不同,但仅仅返回类型不同不足以成为方法的重载。

4、可变参数

JDK 1.5 开始,Java支持传递同类型的可变参数给一个方法。

  • 在方法声明中,在指定参数类型后加一个省略号(…)。
  • 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数都必须在它之前声明。
  • 相当于一个可变长度的数组。
  • 可以直接传入一个数组。

例如:

public class Main {
    public static void main(String[] args) {
        function(5, 1, 2, 3, 4, 5);
    }

    public static void function(int n, int... a) {
        for (int i = 0; i < n; i++) {
            System.out.println(a[i]);
        }
    }
}

运行结果为:
在这里插入图片描述

5.递归

略。

练习

汉诺塔问题

题目描述

汉诺塔由三根柱子(分别用A B C表示)和n个大小互不相同的空心盘子组成。一开始n个盘子都摞在柱子A上, 大的在下面,小的在上面,形成了一个塔状的锥形体。
在这里插入图片描述
现要将这些圆盘移到C柱上,在移动过程中可放在B柱上暂存。要求:

(1)每次只能移动一个圆盘;

(2)A、B、C三根细柱上的圆盘都要保持上小下大的顺序;

请输出每次移动的方法并在最后输出总共所需移动的次数。

示例

输入:
3

输出:
第1步将1号盘子从A移动到C
第2步将2号盘子从A移动到B
第3步将1号盘子从C移动到B
第4步将3号盘子从A移动到C
第5步将1号盘子从B移动到A
第6步将2号盘子从B移动到C
第7步将1号盘子从A移动到C
所需要移动的次数为:7

代码

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        hanoi(n, 'A', 'B', 'C');
        System.out.println("所需要移动的次数为:" + ans);
        scanner.close();
    }

    public static int ans = 0;//ans为移动的次数

    public static void hanoi(int n, char A, char B, char C) {// 将n个盘子从A柱借助B柱移动到C柱
        if (n == 0) return;//终止条件
        hanoi(n - 1, A, C, B);//先假设将n-1个盘子从A柱借助C柱移动到B柱
        ans++;//将A柱的第n个盘子从A柱移动到C柱,移动的次数加一
        System.out.println("第" + ans + "步将" + n + "号盘子从" + A + "移动到" + C);
        hanoi(n - 1, B, A, C);//再将B柱的n-1个盘子借助A柱移动到C柱
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值