第三节 java的方法定义

1.概念

是将具有独立功能的代码块组织成一个整体,使其具有特殊功能的代码集。

注意:
①方法必须先创建才能用,该过程叫方法定义;
②方法创建后不可直接运行,需要手动使用,该过程叫方法调用。

 

2.定义格式

public static void 方法名 () {
//方法体
}

//例如,定义一个判断数字是偶数还是奇数的方法,并调用
public class demo01 {

    public static boolean isOuNumber (int number){//说明:boolean是带返回值
        if (number %2 == 0){
            return true;
        }
        return false;
    }

    public static void main(String[] args) {
        boolean result = isOuNumber(81);
        System.out.println(result?"偶数":"奇数");
    }

 

3.调用格式

方法名(); //如 getMax();

 

4.常见错误:

(1)不可在main方法中定义方法。
(2)注意定义和调用的方法名一致,因为java区分大小写。

 

6.小知识

栈:先进后出,后进先出。类似于弹夹,先进的在栈底部。

 

7.带参数的方法

public class demo02 {
	//在此处定义
    public static void getMax(int a,int b){//说明:void是不带返回值
        int max = a>b?a:b;
        System.out.println("最大值为:" + max);
    }

    public static void main(String[] args) {
        getMax(5,9); //在此处调用,可随意修改要比较的2个数字
    }

}

8.形参与实参

(1)形参:方法定义中的参数。如:int a;
(2)实参:指方法调用中的参数。如:6,a。

 

9.定义方法的注意事项

(1)方法不能嵌套,即方法中不能再定义方法。
(2)void表示无返回值,return可省略也可不省,但后面不加数据。(否则会报错)

 

10.方法调用中的三元运算符

public static void main(String[] args){
	//将方法的结果传给result。
	boolean result = isNumber(3);
	System.out.println(result?"偶数":"奇数");
}

 

11.方法重载

(1)概念:指同一个类中定义的多个同名方法之间的关系。
(2)条件:①多个方法在同一个类中;②多个方法有相同的方法名;③多个方法的参数类型(或数量)不同。(以上条件需同时满足)
(3)注意:
①方法重载不看参数的变量名称的,下面这种不叫方法重载。

public static int sum(int a,int b){
    return a+b;
}
//仅改变变量名称,会报错
public static int sum(int c,int d){
    return c+d;
}

②方法重载与方法的返回值类型无关,下面这种也不叫方法重载。

public static int sum(int a,int b){
    return a+b;
}
//仅将第一行的返回值int改成double,会报错
public static double sum(int a,int b){
    return a+b;
}

 

12.方法参数的传递

(1)基本数据类型(byte/short/int/long/double/float/char/boolean)的参数,形参的改变,不会影响实参的值。请看下面的例子。因为只操作了栈,没有改变堆中内存地址对应的值。

public class demo5 {
    public static void change(int num){
        num = 20;//形参(在方法定义中的参数)
    }

    public static void main(String[] args) {
        int num = 10;//实参(在方法调用中的参数)
        System.out.println("方法调用前num:"+num);
        change(num);
        System.out.println("方法调用后num:"+num);//请思考此时的num输出后是多少呢?答案:10.
    }
    
}

(2)引用类型(类、数组、接口等)的参数,形参的改变,会影响实参的值。请看下面“数组”的例子。因为不仅操作了栈,还改变了堆中内存地址对应的值。

public class demo6 {
    public static void main(String[] args) {
        int[] arr = {20,30,40};
        System.out.println("调用方法前:"+arr[0]);//结果为20.
        change(arr);
        System.out.println("调用方法后:"+arr[0]);//结果为100.
    }

    public static void change(int[] arr){
        arr[0] = 100;
    }
}

 

13.方法的案例

(1)使用方法遍历数组。

public class demo7 {
    public static void arrBL(int[] arr){
        if(arr == null){
            return; //空数组就不报错
        }
        for(int i=0;i<arr.length;i++){
            System.out.print(arr[i]);
            if(i<arr.length-1){
                System.out.print(",");
            }
        }
    }

    public static void main(String[] args) {
        int[] arr = {22,33,44,55,66,77};
        int[] arr1 = null;//空数组
        arrBL(arr);
        arrBL(arr1);
    }
}

(2)查找数组的最大值。

public class demo8 {

    public static int getMax(int[] arr){
        int max = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (arr[i]>max){
                max = arr[i];
            }
        }
        return max;
    }

    public static void main(String[] args) {
        int[] arr = {2,33,168,1999,88,5999};
        int result = getMax(arr);
        System.out.println("查找的最大值为:"+ result);
    }
}

 

14.debug调试

(1)概念:debug是程序调试工具,用于查看程序的执行流程,进而调试程序。(bug就是程序发生了错误)

(2)操作流程:
  ①打断点,鼠标在需要开始的那行前面单击。
  ②idea快捷键:F8 一步一步调试,F9 直接跳转到下一个断点,F7 直接调试进入方法里面,可查看细节。

(3)例子,debug调试求偶数和。

public class demo14 {
    //求10以内的偶数和
    public static void main(String[] args) {
        int sum = 0;
        for (int i = 0; i < 11; i++) {
            if (i%2==0){
                sum += i;
            }
        }
        System.out.println("总和为:"+sum);
    }
}

 

15.案例1——逢七过

题目:和朋友聚会时,玩一个游戏:逢七过,规则是:从任意一个数字开始报数,当你要报的数字包含7或者是7的位数时,都要说过。(数字在100之内,不含100)

public class test01 {
    public static void main(String[] args) {
        /**需求分析:数据在1-100之间,用for循环
         * 1.根据规则,用if语句判断数据:要么个位是7,要么十位是7,要么能被7整除
         * 2.解析:
         * 个位:17/10--7,
         * 十位:71/10=7,7%10=7,这里不能用 71/10=7,7%7=0,因为 1/10=0,0%7=0结果也一样,
         * 实际上 1的十位并不是7,对该条件进行了干扰。
         * 整除:14/7=2--0.
         * 3.在控制台输出
         */
        for (int x = 1; x < 101; x++) {
            if(x%10==7 || x/10%10==7 || x%7==0){
                System.out.println("当前数字为:"+ x +",直接过!");
            }
            else {
                continue;
            }
        }

    }

}

 

16.案例2——数组求和

题目:有一个数组,元素是{71,27,33,22,100,87,77,57}。求出该数组中满足要求的元素之和。要求是:元素个位和十位不为7,且是偶数。

//方法一:
public static void main(String[] args) {
    int[] arrg ={71,27,33,22,100,87,77,57};
    int sum = 0;
    for (int x =0;x<arrg.length;x++){
        if (arrg[x]%10==7 || arrg[x]/10%10==7 || arrg[x]%2!=0){
            continue;
        }
        else {
            sum += arrg[x];
            System.out.println("符合规定的数字为:" +arrg[x] +"  ");
        }
    }
    System.out.println("结果为:"+sum);

}

//方法二:
public static void main(String[] args) {
    int[] arrg ={71,27,33,22,100,87,77,57};
    int sum = 0;
    for (int x=0;x<arrg.length;x++){
        if (arrg[x]%10!=7&&arrg[x]/10%10!=7&&arrg[x]%2==0){
            sum += arrg[x];
            System.out.println("满足条件的数字为:" + arrg[x]);
        }
    }
    System.out.println("结果为:" + sum);
}

 

17.案例3——数组比较

题目:定义一个方法,比较两个int数组的数字是否相同。

public class test03 {
    public static void main(String[] args) {
        int[] arr1 = {11,22,33,44,55};
        int[] arr2 = {11,22,33,44,15};
        boolean result = compare(arr1,arr2);
        System.out.println("两个数组相等么?" + result);
    }
    public static boolean compare(int[] arr1, int[] arr2){
        //数组长度是否相等
        if (arr1.length != arr2.length){
            return false;
        }
        //数组内容是否相同
        for (int i = 0; i < arr1.length; i++) {
            if (arr1[i]!=arr2[i]){
                return false;
            }
        }
        //上面条件都不符合,返回true
        return true;
    }
}

 

18.案例4——数组查找

题目:已知一个数组 arr = {29,68,33,44,10}; 键盘录入一个数据,查找该数据在数组中的索引,并在控制台输出索引值,如果没有查到,则输出-1.

public class test05 {
    public static void main(String[] args) {
        int[] arr = {29,68,33,44,10};
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入需要判断的数字:");
        int userData = scan.nextInt();
        int result = getIndex(arr,userData);
        System.out.println(result==-1?"数组中没有该数字":"数组中有该数字,其索引值为:"+ result);
    }
    public static int getIndex(int[]arr, int userData){
        for (int i = 0; i < arr.length; i++) {
            if (arr[i]==userData){
                return i;
            }
        }
        return -1;
    }
}

 

19.案例5——评委打分

题目:编程竞赛中,有6个评委为选手打分,分数为0-100的整数。选手的最后得分为:去掉一个最高分和一个最低分后,4个评委打分的平均值,请用代码实现。(不考虑小数)

public class test07 {
    /**
     * 编程竞赛中,有6个评委为选手打分,分数为0-100的整数。选手的最后得分为:
     * 去掉一个最高分和一个最低分后,4个评委打分的平均值,请用代码实现。(不考虑小数)
     * 思路解析:
     * 1.定义一个长度为6的数组。
     * 2.键盘录入的分数存入数组中。
     * 3.分别写一个获取最高分、最低分、评委分数总和的方法。
     * 4.计算平均分
     * 5.输出平均分。
     */
    public static void main(String[] args) {
        int[] arr = new int[6]; //动态数组,可随时更改数组长度
        for (int i = 0; i < arr.length; i++) {
            Scanner sco = new Scanner(System.in);
            System.out.println("请输入第"+(i+1)+"位评委的分数:");
            arr[i] = sco.nextInt();
        }
        int max1 = getMax(arr);
        int min1 = getMin(arr);
        int sum1 = getSum(arr);
        int ave = (sum1-max1-min1)/(arr.length-2);
        System.out.println("最小值为:"+min1);
        System.out.println("最大值为:"+max1);
        System.out.println("平均分为:"+ave);
    }
    //获取最大值的方法
    public static int getMax(int[] arr){
        int max = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (arr[i]>max){
                max = arr[i];
            }
        }
        return max;
    }

    //获取最小值的方法
    public static int getMin(int[] arr){
        int min = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (arr[i]<min){
                min = arr[i];
            }
        }
        return min;
    }

    //获取总分的方法
    public static int getSum(int[] arr){
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        return sum;
    }
}

 

20.案例6——反转数组

(1)概念:将正序的数组元素,进行逆序排列。

(2)代码如下:

public static void main(String[] args) {
    //先定义一个数组
    int[] arr = {33,44,55,66,77,88};
    //下面这行“start<end”其实也可以写成“start<=end”,反正处于中间位置没有影响。
    for (int start=0,end =arr.length-1;start<end;start++,end--){
        int temp = arr[start];
        arr[start] = arr[end];
        arr[end] = temp;
    }
    System.out.print("反转后的数组:");
    for (int i = 0; i < arr.length; i++) {
        System.out.print(arr[i]);
        if (i<arr.length-1){
            System.out.print(",");
        }
    }
}
© 版权声明
THE END
点赞0
相关推荐
评论 抢沙发

请登录后发表评论

    暂无评论内容