`

1.2自己写的数组,为什么会出现数组越界异常

阅读更多
为了复习一下数据结构,今天写了一个模拟数组的程序,不知道什么会出现数组越界异常,拿出来大家共同讨论一下。
MyArray类如下:
//MyArray.java
//创建一个数组类
package utillity.array;

public class MyArray {
	private long[] arr;
	private int len;
	//构造方法
	public MyArray(int len){
		this.setLen(len);
		arr = new long[len];
	}
	//set方法
	public void setElemnt(int index, long value){
		this.arr[index] = value;
	}
	//get方法
	public long getElement(int index){
			return this.arr[index];
	}
	public void setLen(int len){
		this.len = len;
	}
	public int getLen(){
		return this.len;
	}
	/**
	 *
	 *打印数组各元数
	 */
	public void print(){
		for(int i=0; i<this.getLen(); i++){
			System.out.print("arr["+i+"]="+this.getElement(i)+" ");
		}
		System.out.println();
	}
	/**
	 * 
	 * @param serchValue
	 * @return 查找到了那个数组下标值,如果没找到,返回-1
	 */
	public int serch(int serchValue){
		int i = 0;
		int index = -1;
		for(i=0; i<this.getLen(); i++){
			if(this.getElement(i)==serchValue){
				index = i;
				break;
			}
		}
		if(i==this.getLen()){
			System.out.println("你查找的值不存在!");
		}
		return index;
	}
	/**
	 * 删除
	 * @param delValue
	 * 如果数组中存在和所给相等的元数,则删除
	 */
	public void delete(int delValue){
		int index = this.serch(delValue);
		if(index != -1){
			for(int j=index; j<this.getLen();j++){
				this.setElemnt(j, this.getElement(j+1));
			}
			this.setLen(this.getLen()-1);		
		}else{
			System.out.println("不存在值为"+delValue+"的数组元数");
			return;
		}
		
	}
}


下面是测试类:
package utillity.array;

public class TestMyArray {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MyArray arr;
		arr = new MyArray(10);
		arr.setElemnt(0,45);
		arr.setElemnt(1,23);
		arr.setElemnt(2,34);
		arr.setElemnt(3,46);
		arr.setElemnt(4,48);
		arr.setElemnt(5,65);
		arr.setElemnt(6,69);
		arr.setElemnt(7,52);
		arr.setElemnt(8,100);
		arr.setElemnt(9,32);
		//------------------------------测     试---------------------------------------
		// 显示数组元数
		arr.print();
		//----------------------------------------------------------------------------
		//查找
		int index = arr.serch(100);
		if(index!= -1){
			System.out.println("查找信息:arr["+index+"]="+arr.getElement(index));
		}
		//-----------------------------------------------------------------------------
		//删除
		arr.delete(48);

	}

}


不知道为什么总报这个异常,我不会debug,希望大家指正一下,谢谢!
arr[0]=45 arr[1]=23 arr[2]=34 arr[3]=46 arr[4]=48 arr[5]=65 arr[6]=69 arr[7]=52 arr[8]=100 arr[9]=32
查找信息:arr[8]=100
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at utillity.array.MyArray.getElement(MyArray.java:19)
at utillity.array.MyArray.delete(MyArray.java:66)
at utillity.array.TestMyArray.main(TestMyArray.java:33)
分享到:
评论

相关推荐

    零起点学通C++多媒体范例教学代码

    8.3 为什么使用指针 8.3.1 栈和堆 8.3.2 用指针创建堆中空间 8.3.3 用指针删除堆中空间 8.4 动态内存 8.4.1 内存泄漏 8.4.2 在堆中创建对象 8.4.3 在堆中删除对象 8.4.4 访问堆中的数据成员 8.4..5 在构造函数中开辟...

    零起点学通C++学习_多媒体范例教学代码

    8.3 为什么使用指针 8.3.1 栈和堆 8.3.2 用指针创建堆中空间 8.3.3 用指针删除堆中空间 8.4 动态内存 8.4.1 内存泄漏 8.4.2 在堆中创建对象 8.4.3 在堆中删除对象 8.4.4 访问堆中的数据成员 8.4..5 在构造...

    现代C++程序设计

    6.2.4 数组越界==严重的问题 6.2.5 vector与数组的比较 6.3 数组和函数 6.3.1 每个数组都有一个指针 6.3.2 数组指针 6.3.3 向函数传递数组:最开始的引用调用 6.3.4 利用数组和函数生成随机数并进行排序 6.4 C字符...

    Java范例开发大全 (源程序)

     实例36 数组下标越界异常(ArrayIndexOutOfBoundsException) 55  实例37 数组元素类型不匹配异常(ArrayStoreException) 56  实例38 强制类型转换异常(ClassCastException) 56  实例39 索引越界异常...

    java范例开发大全(pdf&源码)

    实例36 数组下标越界异常(ArrayIndexOutOfBoundsException) 55 实例37 数组元素类型不匹配异常(ArrayStoreException) 56 实例38 强制类型转换异常(ClassCastException) 56 实例39 索引越界异常...

    java范例开发大全源代码

     实例36 数组下标越界异常(ArrayIndexOutOfBoundsException) 55  实例37 数组元素类型不匹配异常(ArrayStoreException) 56  实例38 强制类型转换异常(ClassCastException) 56  实例39 索引越界异常...

    java范例开发大全

    实例36 数组下标越界异常(ArrayIndexOutOfBoundsException) 55 实例37 数组元素类型不匹配异常(ArrayStoreException) 56 实例38 强制类型转换异常(ClassCastException) 56 实例39 索引越界异常...

    【全新正版】现代C++程序设计(原书第2版)

    6.2.4 数组越界==严重的问题 6.2.5 vector与数组的比较 6.3 数组和函数 6.3.1 每个数组都有一个指针 6.3.2 数组指针 6.3.3 向函数传递数组:最开始的引用调用 6.3.4 利用数组和函数生成随机数并进行排序 6.4 C字符串...

    Java范例开发大全(全书源程序)

    实例36 数组下标越界异常(ArrayIndexOutOfBoundsException) 55 实例37 数组元素类型不匹配异常(ArrayStoreException) 56 实例38 强制类型转换异常(ClassCastException) 56 实例39 索引越界异常...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例164 数组下标越界异常 212 实例165 空指针异常 213 7.4 常见的已检查型异常 214 实例166 类未发现异常 214 实例167 非法访问异常 215 实例168 文件未发现异常 216 实例169 数据库操作异常 217 7.5 处理异常 218 ...

    联通SGIP1.2完美实现,及模拟网关测试程序

    实现SGIP1.2协议,只需修改短信网关地址,登录名即可,另外还有模拟短信网关测试程序,实时查看发送的内容。公司上线版本,无bug。强烈推荐!

    几种常见排序算法实现

    1.2 BubbleSort:每次比较相邻的两个数,使得最大的数像气泡一样冒到最右边。 1. 3 InsertionSort:每次拿起一个数,插入到它左边数组的正确位置。 1.4 QuickSort:选择一个数,作为标准,小于它的放在左边,大于它...

    超级有影响力霸气的Java面试题大全文档

    为什么要有GC?  GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域...

    C语言深度揭秘

    3.6.8.1,为什么会有内存对齐?................. 70 3.6.8.2,如何避免内存对齐的影响............. 70 3.7, #运算符..........72 3.8,##预算符......72 第四章 指针和数组.....74 4.1,指针..............74 ...

    java 面试题 总结

    为什么要有GC?  GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域...

    迷宫寻路数据结构栈实现

    //当前序号,1.2.3.4分别表示东,南,西,北方向 SElemType e; InitStack(S); curpos=start; //设置"当前位置"为"入口位置" curstep=1; //探索第一步 do{ if(Pass(maze,curpos)){//当前位置可以通过,即是未曾走到...

Global site tag (gtag.js) - Google Analytics