我有一个2D数组,其中包含从 A转到第0行开始的字母,从B转到第1行等等。我们可以使用 charAt < / em> 方法和 A的ASCII值为65 , B为66 ,依此类推。它是一种方法,将参数作为字符串,从相应的行中删除参数,并删除结构的整行。以下代码中唯一错误的是删除方法。
public AlphaList() {
this.list=new String[26][];
for (int row=0; row<this.list.length; row++) {
list[row]=new String[0];
}
}
public void insert(String value) {
int firstChar=(int) value.charAt(0)-65;
String[] newList=new String[list[firstChar].length+1];
newList[newList.length-1]=value;
for(int i=0; i<list[firstChar].length;i++){
newList[i]=list[firstChar][i];
}
list[firstChar]=newList;}
public void remove(String value) {
int firstChar=(int) value.charAt(0)-65;
String[] newList=new String[list[firstChar].length-1];
newList[newList.length-1]=value;
for(int i=0; i<list[firstChar-1].length;i++){
newList[i]=list[firstChar-1][i];
}
list[firstChar]=newList;
}
答案 0 :(得分:0)
根据函数的代码,删除最后两个元素,并将函数参数保存在最后一个单元格中。 您需要编写一个函数来查找存储参数的索引(如果存在)并使用此代码将其从数组中删除:
public void remove(String value) {
int firstChar=(int) value.charAt(0)-65;
int index = FindIndex(list[firstChar],value); // Function that return the index of value
String[] newList=new String[list[firstChar].length-1];
for(int i=0; i<index ;i++)
newList[i]=list[firstChar-1][i];
for(int i=index; i<list[firstChar-1].length;i++)
newList[i]=list[firstChar-1][i+1];
list[firstChar]=newList;
}