1.3 对1.2数组的改进

本文介绍了一个改进的数组类,包括插入、查找、删除等基本操作,并提供了一个测试类来验证这些功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这次我对1.2章节中的数组进行了改进,在测试中我发现了一个问题,当new出数组类对象后,接着对它进行了插入值操作,然后只是显示了一下数组中的元数,再对它进行了插值,就出现数组越界异常...
改进后的代码如下:
package utillity.array;

public class AdvancedArray {
private long[] arr;
private int lenth;
private int nElem;
public AdvancedArray(int max){
arr = new long[max];
this.setLenth(max);
this.nElem = 0;
}
private void setLenth(int lenth){
this.lenth = lenth;
}
public int getLenth(){
return this.lenth;
}
//插入
public void insert(long value){
if(this.nElem < this.getLenth()){
arr[nElem] = value;
nElem++;
}
}
//查找
public boolean find(long serchValue){
boolean b = false;
int i = 0; //记录循环次数
for(i=0; i<this.nElem; i++){
if(arr[i] == serchValue){
b = true;
System.out.println("arr["+i+"]="+arr[i]);
return b;
}
}
if(i == this.nElem){
System.out.println("找不到"+serchValue);
}
return b;
}
//删除
public void delete(long delValue){
int i = 0;
//查找位置
for(i=0; i<this.nElem; i++){
if(arr[i] == delValue){
//找到了要删除的元数
//将该元数的后面所有元数向前移动一个位置
for(int j=i; j<this.nElem; j++){
arr[j] =arr[j+1];
}
//这个别忘了,记录数组中元数个数的nElem要减1
this.nElem--;
}
}

}
//显示
public void display(){
for(int i=0; i<this.nElem; i++){
System.out.println("arr["+i+"]="+arr[i]);
}
}

}


测试类如下:
package utillity.array;

public class TestAdvancedArray {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
AdvancedArray arr = new AdvancedArray(10);
arr.insert(34);
arr.insert(29);
arr.insert(36);
arr.insert(99);
arr.insert(27);
arr.insert(65);
arr.insert(79);
arr.insert(83);
arr.insert(74);
System.out.println("-----测 AdvancedArray 试-----");
System.out.println("-----插 入 前-----");
arr.display();
// System.out.println("-----插 入 后------");
// arr.insert(101);
System.out.println("-----删 除------");
arr.delete(99);
System.out.println("-----删 除 后-------");
arr.display();
System.out.println("-----查 找-------");
arr.find(27);

}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值