【黑马程序员java笔记】java基础的数组和方法练习

交换数组里的数据

题目
定义temp暂时存储要换的数据,改变题目:实现数组的头尾交换

package com.basic.array;

/**
 * @author soso
 * @PackageName:com.basic.array
 * @ClassName:demo04
 * @Description:数组实现头尾交换
 * @date 2024/9/414:56
 */
public class demo04 {
    public static void main(String[] args) {
        //1. 定义数组
        int[] arr = {1,2,3,4,5};

        //2. 利用循环,从中间开始对应的左右互换
        for (int i = 0, j = arr.length-1; i < j; i++, j--) {
            //将i,j互换
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
        //3.打印更换好顺序的数组
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
    }
}

结果图:
倒序

打乱数据

打乱数据
给一个随机索引,然后再交换数据

package com.basic.array;
import java.util.Random;
import java.util.Scanner;
/**
 * @author soso
 * @PackageName:com.basic.array
 * @ClassName:demo05
 * @Description:打乱数组
 * @date 2024/9/415:20
 */
public class demo05 {
    public static void main(String[] args) {
        /*随机打乱数组*/
        //1.定义数组
        int[] arr = new int[10];
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter 10 numbers: ");
        for (int i = 0; i < arr.length; i++) {
            arr[i] = sc.nextInt();
        }
        //2.生成随机索引,并根据随机索引打乱数组
        Random rand = new Random();
        for (int i = 0; i < arr.length; i++) {
            int randIndex = rand.nextInt(arr.length);
            int temp = arr[randIndex];
            arr[randIndex] = arr[i];
            arr[i] = temp;
        }
        //3.打印随机数组
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
        sc.close();
    }
}

结果图:
结果图1
结果图2

设计一个方法,返回最大值

题目

package com.basic.method;
import java.util.Random;

/**
 * @author soso
 * @PackageName:com.basic.method
 * @ClassName:demo05
 * @Description:利用方法求数组最大值
 * @date 2024/9/415:54
 */
public class demo05 {
    public static void main(String[] args) {
        //1.定义数组
        int[] arr = new int[10];
        Random rand = new Random();
        for (int i = 0; i < arr.length; i++) {
            int r = rand.nextInt(100);
            arr[i] = r;
        }
        //2.调用方法打印数组
        printArray(arr);
        //3.调用方法求最大值
        int max = getMax(arr);
        System.out.println(max);
    }
    //1.要干嘛?求最大值
    //2.干这件事需要什么才能完成 数组
    //3.是否需要返回值 需要,返回一个整数值
    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 printArray(int[] arr){
        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            if (i == arr.length - 1) {
                System.out.print(arr[i]);
            }else{
                System.out.print(arr[i] + " ");
            }
        }
        System.out.println("]");
    }

}

结果图:
结果

定义一个方法用于拷贝数组

题目
拷贝的范围可以自己定义,也可以键盘输入。这里设定的是自己定义。

  1. 要干嘛?拷贝数组
  2. 干这件事需要什么?数组,拷贝开始索引和拷贝结束索引
  3. 是否需要返回?返回拷贝的数组
package com.basic.method;
import java.util.Random;

/**
 * @author soso
 * @PackageName:com.basic.method
 * @ClassName:demo06
 * @Description:拷贝数组
 * @date 2024/9/416:11
 */
public class demo06 {
    public static void main(String[] args) {
        int[] arr=giveValue(10);
        int[] newArr=copyOfRange(arr,3,8);
        demo05.printArray(arr);
        demo05.printArray(newArr);
    }
    //1. 要干嘛?拷贝数组
    //2. 干这件事需要什么?数组,拷贝开始索引和拷贝结束索引
    //3. 是否需要返回?返回拷贝的数组
    public static int[] copyOfRange(int[] original, int from, int to) {
        //1.定义数组
        int[] result = new int[to - from];
        //利用伪造索引进行拷贝
        int index = 0;
        for (int i = from; i < to; i++) {
            result[index++] = original[i];
        }
        return result;
    }
    public static int[] giveValue(int num) {
        Random rand = new Random();
        int[] arr = new int[10];
        for (int i = 0; i < arr.length; i++) {
            int r = rand.nextInt(100);
            arr[i] = r;
        }
        return arr;
    }
}

结果图:
拷贝

注意

方法进行值传递时,如果传递的是基础数据类型,则如果main方法中没对数据进行改变,则数据不变;
但是当传递引用数据类型时,传递的是地址值,形参的变化会对数据进行改变。
方法值传递的描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值