如何在二维数组中编写公共void删除方法?

发布于 2024-11-01 03:57:15 字数 1057 浏览 0 评论 0原文

我有一个 2D 数组,其中包含字符串作为字母,从 A 开始到第 0 行,从 B 开始到第 1 行等等。我们可以使用 charAt 方法,A 的 ASCII 值为 65B 为 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;
}

I have a 2D array which contains the strings as letters starting from A goes to row 0 and from B goes to row 1 and etc..we can use charAt method and ASCII value for A is 65 and B is 66 and so on. Its a method that takes an argument a String and deletes the parameter from the corresponding row and also deletes the entire row of the Structure. The only thing wrong IN THE FOLLOWING CODE is the remove method.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夜空下最亮的亮点 2024-11-08 03:57:15

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

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

According to the code of the function you delete the last two elements and save the function argument on the last cell.
You need to write a function that find the index of the stored parameter (if it exist) and the use this code to delete it from array:

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;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文