import java.util.Scanner;
public class Array {
/*
* 增删改查
*
*/
/**
* 根据下标查询元素
*
* @param arr
* @param index
* @return 整型元素
* @author ZZY
* @time 2018-12-07 14:35
*/
public static int queryElementByIndex(int[] arr, int index) {
return arr[index];
}
/**
* 根据元素查找下标
*
* @param arr
* @param ele
* @return 元素下标
*/
public static int queryIndexByElement(int[] arr, int ele) {
int index = -1; // 用来记录下标的变量
// 1:遍历所有的元素
for (int i = 0; i < arr.length; i++) {
// 2 用你要查找的元素和所有的元素做==比较
if (arr[i] == ele) {
// 3 相等判断成立,记录当前元素的下标
index = i;// 记录当前元素的下标
break; // 后面元素就不用判断了
}
}
return index;
}
/**
* 求数组的最大值
*
* @param arr
* @return 最大值
*/
public static int maxValue(int[] arr) {
// 1 假设第一个元素是最大值
int max = arr[0];
// 2:遍历数组
for (int i = 1; i < arr.length; i++) {
// 3 用这个个最大值和后面的元素做大于比较
if (arr[i] > max) {
// 4如果后面的元素比这个最大值还大,那么后面的元素就是最大值
max = arr[i];
}
}
return max;
}
/**
* 求数组的最小值
*
* @param arr
* @return 最小值
*/
public static int minValue(int[] arr) {
// 1 假设第一个元素是最小值
int min = arr[0];
// 2:遍历数组
for (int i = 1; i < arr.length; i++) {
// 3 用后面的元素这个最小值和做小于比较
if (arr[i] < min) {
// 4如果后面的元素比这个最小值还小,那么后面的元素就是最小值
min = arr[i];
}
}
return min;
}
/**
* 给数组添加元素
* @param arr
* @param ele
* @param index
* @return 返回新的数组
*/
public static int[] addElement(int[] arr, int ele, int index) {
// 1:新建一个数组,长度是原数组长度+1 数组扩容
int[] newArr = new int[arr.length + 1];
if(index>=0 && index<newArr.length){
// 2 拿到下标为3的前面的元素,放到新数组按照0 1 2 顺序依次存放
for (int i = 0; i < index; i++) {
newArr[i] = arr[i];
}
// 3 把要添加的元素100放入新数组下标为3的位置
newArr[index] = 100;
// 4 拿到下标为3的后面的元素,放到新数组按照 4 5 顺序依次存放
for (int i = index; i < arr.length; i++) {
newArr[i + 1] = arr[i];
}
}else{
System.out.println("索引超出范围");
//超出范围,返回旧数组
return arr;
}
// 5:返回新数组
return newArr;
}
/**
* 根据下标删除元素
* @param arr
* @param index
* @return 原数组
*/
public static int[] delEleByIndex(int[] arr,int index){
if(index>=0 && index<arr.length){
//1:找到下标为2的元素,后面的元素依次覆盖前面的元素
for(int i = index;i<arr.length-1;i++){
arr[i] = arr[i+1];
}
//2:把最后一位赋值为0
arr[arr.length-1] = 0;
}else{
System.out.println("没有此下标");
}
//3 返回删除后的数组
return arr;
}
/**
* 根据元素删除元素
* @param arr
* @param ele
* @return 下标
*/
public static int delEleByEle(int[] arr,int ele){
//1 :定义删除元素的下标
int index = -1;
//2:用你要删除的元素和数组里面的每一个元素做==比较
for(int i = 0;i<arr.length;i++){
if(ele==arr[i]){
//3:找到要删除的元素后,记录下当前元素的下标
index = i;
break; //后面就不要比较了
}
}
//如果index是-1,直接返回,不需要移位
if(index==-1){
return index;
}
//4:然后后面的下标依次向前移位
for(int i = index;i<arr.length-1;i++){
arr[i] = arr[i+1];
}
//5:把最后一位置为0
arr[arr.length-1] = 0;
//6 返回数组的下标即可
return index;
}
public static void main(String[] args) {
int[] arr = { 10, 20, 300, 40, 50 };
int index = delEleByEle(arr,300);
if(index!=-1){
for (int i : arr) {
System.out.println(i);
}
}else{
System.out.println("没有此元素");
}
/*arr = delEleByIndex(arr,2);
for (int i : arr) {
System.out.println(i);
}
*/
/* int[] newArr = addElement(arr,100,-12);
for (int i : newArr) {
System.out.println(i);
}*/
/*int max = maxValue(arr);
int min = minValue(arr);
System.out.println("最大值是:" + max);
System.out.println("最小值是:" + min);
/
/
* int index = 0; int ele = queryElementByIndex(arr,index);
* System.out.println(“下标为”+index+“的元素是:”+ele);
*/
/*
* Scanner sc= new Scanner(System.in);
* System.out.println("请输入你要查询的元素值"); int ele = sc.nextInt(); //你要查找的元素
* int index = queryIndexByElement(arr,ele); // 4:没有匹配成功,没有此元素
* if(index!=-1){ System.out.println("元素"+ele+"的下标是:"+index); }else{
* System.out.println("没有此元素"); }
*/
}
}