方法的参数传递


一、基本类型

public class ArgsDemo01 {
   
public static void main(String[] args) {
       
int number = 100;
        System.out.println
("调用change方法前:" + number);
       
change(number);
        System.out.println(
"调用change方法后:" + number);
    }
   
public static void change(int number) {
        number =
200;
    }
}

 开辟的栈内存里先后执行main主方法和change()方法,在主方法中初始化的number变量值并没有改变,所以最终先后执行change()方法的输出结果都是100。

二、引用类型

public class ArgsDemo02 {
   
public static void main(String[] args) {
       
int[] arr = {10, 20, 30};
        System.out.println(
"调用change方法前:" + arr[1]);
       
change(arr);
        System.out.println(
"调用change方法后:" + arr[1]);
    }
   
public static void change(int[] arr) {
       
arr[1] = 200;
    }
}

main主方法中开辟了栈内存和数组堆内存,在main主方法中初始化数组arr[],再调用change()方法,通过引用数组的地址进行参数的传递,在change()方法中对数组进行了赋值操作,所以最终先后执行的change()方法的输出结果被改变。

 三、基础练习

1、逢七跳过

朋友聚会的时候可能会玩一个游戏:逢七过。 ​ 规则是:从任意一个数字开始报数,当你要报的数字包含7或者是7的倍数时都要说:过。 ​ 为了帮助大家更好的玩这个游戏,这里我们直接在控制台打印出随机数小于100的满足逢七必过规则的数据。 ​ 这样,大家将来在玩游戏的时候,就知道哪些数据要说:过。

public class SevenSkip {
    public static void main(String[] args) {

        int number = getNumber();
        System.out.println("随机数为:"+number);
        while (true) {
            if (number>100){
                break;
            }
            if (number%7==0||number%10==7||number/10%10==7){
                System.out.println("过");
            }else {
                System.out.println(number);
            }
            number++;
        }
    }

    private static int getNumber() {
        int number = (int) (Math.random() * 10) + 1;
        return number;
    }

}

2、数组元素求和

有这样的一个数组,元素是{68,27,95,88,171,996,51,210}。求出该数组中满足要求的元素和, ​ 要求是:求和的元素个位和十位都不能是7,并且只能是偶数

代码实现

import java.util.Arrays;

public class SumArray {
    public static void main(String[] args) {
        int[] array = new int[10];
        setArrayData(array);
        System.out.println(Arrays.toString(array));
        int sum = sumArray(array);
        System.out.println("数组和为:" + sum);
    }

    private static int sumArray(int[] array) {
        int sum = 0;
        for (int i = 0; i < array.length; i++) {
            if (array[i] % 10 != 7 && array[i] / 10 % 10 != 7 && array[i] % 2 == 0) {
                sum += array[i];
            }
        }
        return sum;
    }

    /**
     * 初始化数组
     *
     * @param array
     */
    private static void setArrayData(int[] array) {
        for (int i = 0; i < array.length; i++) {
            array[i] = (int) (Math.random() * 100) + 1;
        }
    }
}

3、判断两个数组是否相同

定义一个方法,用于比较两个数组的内容是否相同

package com.gkl.model;

import java.util.Arrays;

public class CompareArray {
    public static void main(String[] args) {
        int number = (int) (Math.random()*10)+1;
        int[] array1 = new int[number];
        int[] array2 = new int[number];
        setArrayData(array1);
        setArrayData(array2);
        System.out.println(Arrays.toString(array1));
        System.out.println(Arrays.toString(array2));
        boolean flag=compareArray(array1,array2);
        System.out.println("两个数组是否相同:"+flag);

    }

    private static boolean compareArray(int[] array1, int[] array2) {

        if (array1.length!=array2.length){
            return false;
        }
        for (int i = 0; i < array1.length; i++) {
            if (array1[i]!=array2[i]){
                return false;
            }
        }
        return true;
    }

    /**
     * 初始化数组
     *
     * @param array
     */
    private static void setArrayData(int[] array) {
        for (int i = 0; i < array.length; i++) {
            array[i] = (int) (Math.random() * 10) + 1;
        }
    }
}

4、查找元素在数组中出现的索引位置

已知一个数组 arr = {19, 28, 37, 46, 50}; 键盘录入一个数据,查找该数据在数组中的索引。

并在控制台输出找到的索引值。如果没有查找到,则输出-1

package com.gkl.model;

import java.util.Scanner;

public class IndexArray {
    public static void main(String[] args) {
        int[] array = {19, 28, 37, 46, 50};
        //键盘输入数据
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入查找数据:");
        int number = scanner.nextInt();
        int index = getIndex(array, number);
        System.out.println("查找数据的索引值为:"+index);
    }

    private static int getIndex(int[] array, int number) {

        int index = -1;
        for (int i = 0; i < array.length; i++) {
            if (number == array[i]) {
                index = i;
                break;
            }
        }
        return index;
    }
}

5、数组元素反转

已知一个数组 arr = {19, 28, 37, 46, 50}; 用程序实现把数组中的元素值交换, ​ 交换后的数组 arr = {50, 46, 37, 28, 19}; 并在控制台输出交换后的数组元素。

package com.gkl.model;

import java.util.Arrays;

public class ReverseArray {
    public static void main(String[] args) {
        int[] array = new int[10];
        setArrayData(array);
        System.out.println("原数组:" + Arrays.toString(array));
        reverseArray(array);
        System.out.println("反序数组:" + Arrays.toString(array));
    }

    private static void reverseArray(int[] array) {
        for (int i = 0; i < array.length / 2; i++) {
            int temp = array[i];
            array[i] = array[array.length - 1 - i];
            array[array.length - 1 - i] = temp;
        }
    }

    /**
     * 初始化数组
     *
     * @param array
     */
    private static void setArrayData(int[] array) {
        for (int i = 0; i < array.length; i++) {
            array[i] = (int) (Math.random() * 100) + 1;
        }
    }
}

6、评委打分

在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。 ​ 选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值 (不考虑小数部分)。

package com.gkl.model;

import java.util.Arrays;

public class PlayScore {
    public static void main(String[] args) {
        int[] array = new int[6];
        setArrayData(array);
        System.out.println(Arrays.toString(array));
        int max = getMax(array);
        int min = getMin(array);
        int sum = getSum(array);
        double avg = (sum - max - min)*1.0/(array.length-2);
        System.out.println("最低分为:"+min);
        System.out.println("最高分为:"+max);
        System.out.println("平均分为:"+avg);

    }

    private static int getSum(int[] array) {
        int sum = 0;
        for (int i = 0; i < array.length; i++) {
            sum += array[i];
        }
        return sum;
    }

    private static int getMin(int[] array) {
        int min = array[0];
        for (int i = 1; i < array.length; i++) {
            if (min > array[i]) {
                min = array[i];
            }
        }
        return min;
    }

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

    /**
     * 初始化数组
     *
     * @param array
     */
    private static void setArrayData(int[] array) {
        for (int i = 0; i < array.length; i++) {
            array[i] = (int) (Math.random() * 21) + 80;
        }
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值