1.需求:定义一个方法,找出int数组中,最大值的索引下标
[1,2,23,5,6,7,8]
public static void main(String[] args) {
int[] arr = {1,2,23,5,6,7,8};
index(arr);//2
}
/*
1.需求:定义一个方法,找出int数组中,最大值的索引下标
[1,2,23,5,6,7,8]
*/
public static void index(int[] arr){
int max = arr[0];//最大值
for (int i = 0; i < arr.length; i++) {
if (max < arr[i]){
max = arr[i];
}
}
for (int i = 0; i < arr.length; i++) {
if (max == arr[i]){//最大值的下标
System.out.println(i);
}
}
}
2.在一个数组中,找出所有的 指定数据的下标位置
[1,2,8,4,5,7,8,7,8,9]
public static void main(String[] args) {
/*
在一个数组中,找出所有的 指定数据的下标位置
[1,2,8,4,5,7,8,7,8,9]
*/
int[] arr = {1,2,8,4,5,7,8,7,8,9};
//创建数组记录元素出现的所有下标位置,会有多余元素需要处理
int[] tempArr = new int[10];
//元素添加的位置
int index = 0;
for (int i = 0; i < arr.length; i++) {
if (8 == arr[i]){
tempArr[index] = i;
index++;
}
}
//处理过的数组
int[] newArr = new int[index];
for (int i = 0; i < newArr.length; i++) {
newArr[i] = tempArr[i];
}
//打印数组元素
System.out.println(Arrays.toString(newArr));
}
3.【难】. 完成一个方法,替换掉数组中所有元素为0的元素,替换为指定元素 [1,2,3,0,0,0]
public static void main(String[] args) {
/*
【难】. 完成一个方法,替换掉数组中所有元素为0的元素,替换为指定元素
[1,2,3,0,0,0]
*/
//原数组
int[] arr = {1,2,3,0,0,0};
//需要替换的元素数组
int[] arr1 = {4,5,6};
//记录 所有 元素为 0 的位置
int[] tempArr = new int[arr.length];
//起始位置
int index = 0;
//所有元素为0的 下标添加到数组tempArr中
for (int i = 0; i < arr.length; i++) {
if (0 == arr[i]){
tempArr[index] = i;
index++;
}
}
//替换的数组元素添加到arr数组中
for (int i = 0; i < arr1.length; i++) {
arr[tempArr[i]] = arr1[i];
}
System.out.println(Arrays.toString(arr));
}
4.【难】. 完成一个方法,删除指定下标的元素,要求从删除位置开始,
之后的元素整体前移。【难】
[1,2,3,4,5,6,7]=>[1,2,4,5,6,7,0]
public static void main(String[] args) {
test(2);
}
/*【难】. 完成一个方法,删除指定下标的元素,要求从删除位置开始,
之后的元素整体前移。【难】
[1,2,3,4,5,6,7]=>[1,2,4,5,6,7,0]
*/
public static void test(int index){
int[] arr = {1,2,3,4,5,6,7};
//指定位置的元素去除,后面的元素往前移动
for (int i = index; i < arr.length-1; i++) {
arr[index] = arr[index+1];
index++;
}
arr[arr.length-1] = 0;//最后一个元素为0直接添加
System.out.println(Arrays.toString(arr));
}
5.【难】. 完成一个方法,添加指定元素到指定下标位置, 要求从指定下标位置之后的元素,整体向后移动。【难】 [1,2,3,4,5,0]=>[1,2,250,3,4,5]
public static void main(String[] args) {
addE(250,5);
}
/*
【难】. 完成一个方法,添加指定元素到指定下标位置,
要求从指定下标位置之后的元素,整体向后移动。【难】
[1,2,3,4,5,0]=>[1,2,250,3,4,5]
*/
public static void addE(int e,int index){
int[] arr = {1,2,3,4,5,0};
//创建长度为 arr数组长度 - index下标
int[] tempArr = new int[arr.length - index - 1];
//添加元素的起始下标
int n = 0;
//把指定位置后的元素添加到临时数组
for (int i = index; i < arr.length-1; i++) {
tempArr[n] = arr[i];
n++;
}
//指定元素添加指定位置
arr[index] = e;
//把临时数组中的元素添加到原数组中
for (int i = 0; i < tempArr.length; i++) {
arr[index+1] = tempArr[i];
index++;
}
System.out.println(Arrays.toString(arr));
}
6.【难】. 找出数组中最大的元素,放到下标为0的位置
public static void main(String[] args) {
addIndex();
}
/*
【难】. 找出数组中最大的元素,放到下标为0的位置
1,2,250,3,4,5
*/
public static void addIndex(){
int[] arr = {1,250,2,3,4,5};
int max = 0;//最大值
int index = 0;//最大值的位置
//找出最大值和下标
for (int i = 0; i < arr.length; i++) {
if (max < arr[i]){
max= arr[i];
index = i;
}
}
int[] tempArr = new int[index];
//最大值前面的元素添加到数组中
for (int i = 0; i < index; i++) {
tempArr[i] = arr[i];
}
arr[0] = max;
//把临时数组添加到原数组
for (int i = 0; i < tempArr.length; i++) {
arr[i+1] = tempArr[i];
}
System.out.println(Arrays.toString(arr));
}