亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 Java 列表中刪除一條記錄

從 Java 列表中刪除一條記錄

溫溫醬 2023-05-10 13:16:39
這是我從列表中刪除記錄的代碼,但我似乎無法讓它工作。有什么建議么?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");}
查看完整描述

2 回答

?
守候你守候我

TA貢獻1802條經驗 獲得超10個贊

你減少了size太多次。它應該只在你移動循環中的元素后完成一次for。


還要注意for循環條件。由于您在循環內部使用,i + 1您只能循環直到i < size - 1或者您將嘗試訪問數組大小之外的元素。


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


查看完整回答
反對 回復 2023-05-10
?
慕容3067478

TA貢獻1773條經驗 獲得超3個贊

在這種情況下,我想您有義務使用數組操作來完成工作,


不過,就個人而言,我會通過使用完全避免循環System.arraycopy():


System.arraycopy(this.collection, deletionIndex, this.collection, deletionIndex + 1,

? ? ? ? this.size - (deletionIndex + 1));

this.size--;

較短的代碼往往意味著較少的錯誤,并且該特定代碼至少與原始循環一樣清晰,至少對我而言。此外,如果沒有循環,就沒有機會將不屬于循環的語句放入循環中,這是原始代碼的主要問題。


查看完整回答
反對 回復 2023-05-10
  • 2 回答
  • 0 關注
  • 202 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號