Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中从列表中删除记录_Java - Fatal编程技术网

在Java中从列表中删除记录

在Java中从列表中删除记录,java,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 = de

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

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");
}
public void deleteRecord(扫描仪输入)
{
int delete=0;
showRecords();
System.out.println(“在列表中输入要删除的编号:”);
delete=in.nextInt();
删除=删除-1;
for(int i=delete;i
您将
大小减少了太多次。在移动
for
循环中的元素后,只能执行一次

还要注意
for
循环条件。由于您在循环内使用
i+1
,因此只能循环到
i
,否则您将尝试访问数组大小以外的元素

int toDelete = in.nextInt(); // assume it's between 0 and size - 1
for (int i = toDelete; i < size - 1; i++) {
    collection[i] = collection[i + 1];
} 
collection[size] = null;
size--;
int-toDelete=in.nextInt();//假设它介于0和大小-1之间
for(inti=toDelete;i
我想您有义务使用数组操作来完成这项工作,在这种情况下,@KarolDowbecki的回答既确定了主要问题,又提供了一个很好的解决方案

不过,就个人而言,我会使用
System.arraycopy()
,完全避免循环:

更短的代码往往意味着更少的错误,而且特定的代码至少和原始循环一样清晰,至少对我来说是这样。而且,如果没有循环,就没有机会将不属于那里的语句放入循环中,这是原始代码的主要问题。

你是什么意思-“我似乎无法让它工作”?
System.arraycopy(this.collection, deletionIndex, this.collection, deletionIndex + 1,
        this.size - (deletionIndex + 1));
this.size--;