判断代码的错误并修改

liumingwei2009 2009-09-19 09:59:25

public class ArrayList {


public int[] data; //储存线性表的元素
public int maxLength = 50; //储存数组的容量
public int listSize = 0; //储存线性表元素的个数



/**
* 方法initiate无参数,用于初始化线性表
* @param initiate
*/
public void initiate() {
data = new int[maxLength];
listSize = data[0];

}





/**
* 方法length无参数,用于返回线性表的长度
* @param length
*/
public int length() {
return listSize;
}





/**
*方法insert用于插入数据,在index后面插入一个数值为item的数。
* @param index
* @param item
*/
public void insert(int index,int item) {
for(int i = listSize;i >= index +1;i--) {
data[i + 1] = data[i];
}
data[index + 1] = item;
listSize++;
}





/**
* 方法add用于在线性表的末尾添加一个数值为item的数。
* @param item
*/
public void add(int item) {

data[listSize+1] = item;
listSize++;
}






/**
* 方法delete用于删除第index个数
* @param index
*/
public void delete(int index) {

for (int j = index;j <= listSize;j++) {data[j] = data[j+1];}
listSize--;
}






/**
* 方法get返回第index个数的值,如果index超出范围则返回null。
* @param index
* @return
*/

public String get(int index) {
String j;
int i = 0;
if(index > 0 && index <= listSize) {i = data[index];j = Integer.toString(i);}
else {j = "null";}
return j;

}


/**
* 方法set将第index个数改成数值为item的数。
* @param index
* @param item
* @return
*/
public int set(int index,int item) {
int previousValue = data[index];
data[index] = item;
return previousValue;
}


/**
* 方法traverse将线性表的所有元素显示出来
*
*/
public void traverse() {
for(int i = 1;i <= listSize;i++) {System.out.print(data[i] + " ");}
}




/**
* 方法clear将线性表清空
*
*/
public void clear() {
listSize = 0;
}




public String locate(int item) {
String j = "null";

for(int i = 1;i <= listSize;i++) {
if(item == data[i]) {int index = i;j = Integer.toString(index);}
else {j = "null";}
}
return j;

}


/**
* 方法isEmpty判断线性表是否为空,若为空则返回数值1,否则返回数值0
* @return
*/
public byte isEmpty() {
byte i = 0;
if (listSize == 0) {i = 1;}
else {i = 0;}
return i;
}






}
这是数据结构中线性表的顺序存储结构的java实现。前面几种方法已测试通过,就是locate方法返回总是返回null,不知道什么原因
...全文
105 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zrcvic 2009-09-19
  • 打赏
  • 举报
回复
1 楼说的是错的,String 对象不可改变是说对象本身,而不是指向对象的引用。
zrcvic 2009-09-19
  • 打赏
  • 举报
回复
楼主你看你 locate 方法里的循环,在找到了的时候将 j 设置成 Integer.toString(index),这样没错,但是循环继续,下一个数不满足 item == data[i],所以 j 又被设置回了 "null"……

简单改动后的方法:(改动后的方法未必是最好的 locate 实现)
public String locate(int item) {
String j = "null";

for(int i = 1;i <= listSize;i++) {
if(item == data[i]) {int index = i;j = Integer.toString(index);}
// else {j = "null";} // 删掉这一句
}
return j;
}
rookie001 2009-09-19
  • 打赏
  • 举报
回复
public String locate(int item) {
String j = "null"; ------>String j = null; String 类型是不能改变的 ,j = Integer.toString(index);这里会出错

for(int i = 1;i <= listSize;i++) {
if(item == data[i]) {int index = i;j = Integer.toString(index);}
else {j = "null";}
}
return j;

}

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧