从 Java 列表中删除一条记录

这是我从列表中删除记录的代码,但我似乎无法让它工作。有什么建议么?


public void deleteRecord (Scanner in)

{

    int delete = 0;


    showRecords();

    System.out.println("Enter the number in the list to delete:");

    delete = in.nextInt();

    delete = delete -1;

    for (int i = delete; i < this.size; i++)

    {

        this.collection[i] = this.collection[i + 1];

        this.collection[size] = null;

        this.size--;

        System.out.println("Record deleted successfully");

        showRecords();

    }

    System.out.println("Please enter a number in the list to delete");

}


温温酱
浏览 168回答 2
2回答

守候你守候我

你减少了size太多次。它应该只在你移动循环中的元素后完成一次for。还要注意for循环条件。由于您在循环内部使用,i + 1您只能循环直到i < size - 1或者您将尝试访问数组大小之外的元素。int toDelete = in.nextInt(); // assume it's between 0 and size - 1for (int i = toDelete; i < size - 1; i++) {&nbsp; &nbsp; collection[i] = collection[i + 1];}&nbsp;collection[size] = null;size--;

慕容3067478

在这种情况下,我想您有义务使用数组操作来完成工作,不过,就个人而言,我会通过使用完全避免循环System.arraycopy():System.arraycopy(this.collection, deletionIndex, this.collection, deletionIndex + 1,        this.size - (deletionIndex + 1));this.size--;较短的代码往往意味着较少的错误,并且该特定代码至少与原始循环一样清晰,至少对我而言。此外,如果没有循环,就没有机会将不属于循环的语句放入循环中,这是原始代码的主要问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java