如何解决如何在2D数组中编写公共void删除方法?
| 我有一个二维数组,其中包含字符串,因为字母从A到第0行,从B到第1行,依此类推。我们可以使用charat方法,A的ASCII值为65,B的值为66,依此类推。它是一个使用参数String的方法,该方法从相应的行中删除该参数,并且还删除该结构的整个行。以下代码中唯一的错误是remove方法。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;
}
解决方法
根据函数的代码,您删除最后两个元素,并将函数参数保存在最后一个单元格上。
您需要编写一个函数来查找存储的参数的索引(如果存在),并使用此代码从数组中删除它:
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;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。