【问题标题】:how to write a public void delete method in 2D array?如何在二维数组中编写公共 void 删除方法?
【发布时间】:2011-04-13 23:09:25
【问题描述】:

我有一个二维数组,其中包含作为字母的字符串,从 A 开始到第 0 行,从 B 到第 1 行等等。我们可以使用 charAt 方法和 ASCII 值 A 是 65B 是 66 等等。它是一种接受一个字符串参数从相应行中删除参数并删除结构的整行的方法。以下代码中唯一错误的是 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;
}

【问题讨论】:

  • 你的删除方法应该怎么做?从数组中删除给定的字符串?它有什么作用?添加一些输出,以便您查看发生了什么。
  • 它只是从数组列表中删除传递的字符串,因此将行减一。
  • 您是否观察到它的真正作用?打印出你的清单,你会看到的。
  • 是否允许使用List&lt;List&lt;String&gt;&gt;
  • NOPE.. 列表中没有要打印的元素..

标签: java arrays alphanumeric alphabetical


【解决方案1】:

根据函数的代码,您删除最后两个元素并将函数参数保存在最后一个单元格中。 您需要编写一个函数来查找存储参数的索引(如果存在)并使用此代码从数组中删除它:

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;
}

【讨论】:

    猜你喜欢
    • 2015-04-08
    • 1970-01-01
    • 2023-04-01
    • 2016-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多