Java数组实验课(实训) 紫金学院

 

实验内容

  1. 写一个类,在其中定义一些方法,实现数组元素的遍历、排序、插入、删除、查找。
  2. 将一个数组中的元素倒排过来,不能新开一个数组的临时存储空间,只能在原数组上改。
  3. 实现在一个数组指定位置添加元素和删除元素的功能。

提示:解答该题需要考虑如下问题。

①添加元素后超过数组容量时数组的扩展容量问题。

②添加元素前后数组中元素的变化。

③删除元素前后数组中元素的变化。

测试类:

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;
	}
	
}

 

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵相机~

谢谢你,调试、讲解私聊我~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值