交换数组里的数据
定义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();
}
}
结果图:
设计一个方法,返回最大值
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("]");
}
}
结果图:
定义一个方法用于拷贝数组
拷贝的范围可以自己定义,也可以键盘输入。这里设定的是自己定义。
- 要干嘛?拷贝数组
- 干这件事需要什么?数组,拷贝开始索引和拷贝结束索引
- 是否需要返回?返回拷贝的数组
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方法中没对数据进行改变,则数据不变;
但是当传递引用数据类型时,传递的是地址值,形参的变化会对数据进行改变。