实验内容
- 写一个类,在其中定义一些方法,实现数组元素的遍历、排序、插入、删除、查找。
- 将一个数组中的元素倒排过来,不能新开一个数组的临时存储空间,只能在原数组上改。
- 实现在一个数组指定位置添加元素和删除元素的功能。
提示:解答该题需要考虑如下问题。
①添加元素后超过数组容量时数组的扩展容量问题。
②添加元素前后数组中元素的变化。
③删除元素前后数组中元素的变化。
测试类:
package test3;
import java.util.Arrays;
import java.util.Scanner;
public class test0301 {
public static void main(String[] args){
ArrayWays arr=new ArrayWays();
int[] a=arr.InitArray();
arr.ArrayInsert(a); //2.遍历插入
System.out.print("3.输出数组为:");
arr.print(a); //3.遍历输出
arr.reverse(a); //5.逆序
arr.print(a);
arr.sort(a); //6.从小到大遍历排序
arr.print(a);
arr.find(a); //7.查找
int[] b= arr.Insert(a); //8.指定位置插入
arr.print(b);
int[] d=arr.delete(b); //9.指定位置删除
arr.print(d);
}
}
方法:
package test3;
import java.util.Arrays;
import java.util.Scanner;
public class ArrayWays {
public int[] InitArray() {
Scanner s1=new Scanner(System.in);
System.err.println("请合理的为数组开辟空间:");
int c=s1.nextInt(); //1.开辟空间
int[] a=new int[c];
return a;
}
public void ArrayInsert(int[] a) {
Scanner sc=new Scanner(System.in);
System.out.println("1.创建数组,请输入你要创建数组的长度:");
int b=sc.nextInt();
System.out.println("2.请存入你要存放的"+b+"个数组元素:");
for (int i = 0; i < b; i++) {
a[i]=(int) sc.nextInt();
}
}
public void print(int[] a) {
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+" ");
}
System.out.println();
}
public void reverse (int[] a) {
for(int i=0; i<a.length/2;i++) {
int temp=a[i] ;
a[i]=a[a.length-i-1] ;
a[a. length-i-1]=temp;
}
System.out.print("4.逆序后的数组排列:");
}
public void sort(int[] a) {
System.out.print("5.下面有小到大进行排序:");
for (int i = 0; i < a.length; i++) {
for (int j = i+1; j < a.length; j++) {
if (a[i]>a[j]) {
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
}
public void find(int[] a) {
System.out.print("6.请输入要查询的元素:");
Scanner scanner=new Scanner(System.in);
int elem=scanner.nextInt();
int i=0;
while(a[i]!=elem) {
i++;
}
if (a[i]==elem) {
System.out.println("找到了~,你要查找的元素"+elem+"在第"+(i+1)+"个位置");
}else {
System.out.println("对不起,你要查找的元素不在数组中!");
}
}
public int[] Insert(int[] a) {
System.out.print("7.请输入你要插入的位置是:");
Scanner scanner=new Scanner(System.in);
int e=scanner.nextInt();
if (e<1||e>a.length+1) {
System.out.println("抱歉,您插入的位置不对!");
}else {
int b=a.length+1;
int[] a3=new int[b];
System.arraycopy(a, 0, a3, 0, a.length);
a = a3;
for (int j =a.length-1; j >=e; j--) {
a[j]=a[j-1];
}
System.out.print("再输入你要插入的元素:");
int f=scanner.nextInt();
a[e-1]=f;
System.out.print("插入后的数组排列为:");
}
return a;
}
public int[] delete(int[] a) {
System.out.print("8.请输入你要删除的位置是:");
Scanner scanner=new Scanner(System.in);
int d=scanner.nextInt();
if (d<1||d>a.length) {
System.out.println("抱歉,您删除的位置不对!");
}else {
for (int i = d; i<= a.length-1; i++) {
a[i-1] = a[i];
}
a=Arrays.copyOf(a, a.length-1);
System.out.print("9.删除元素后数组排列为:");
}
return a;
}
}