簡體   English   中英

刪除Arraylist中的對象

[英]Delete object in Arraylist

我的問題是,當我在數組中有2個對象時,它會循環2x,然后詢問另一個“您確定要刪除它嗎?”。 無法弄清楚我的循環。 這是代碼:

for (Iterator<Student> it = student.iterator(); it.hasNext();) {

    Student stud = it.next();
    do {
        System.out.print("Are you sure you want to delete it?");
        String confirmDelete = scan.next();

        ynOnly = false;

        if (confirmDelete.equalsIgnoreCase("Y")
                && stud.getStudNum().equals(enterStudNum2)) {
            it.remove();
            System.out.print("Delete Successful");
            ynOnly = false;
        } else if (confirmDelete.equalsIgnoreCase("N")) {
            System.out.print("Deletion did not proceed");
            ynOnly = false;
        } else {
            System.out.println("\nY or N only\n");
            ynOnly = true;
        }
    } while (ynOnly == true);

}

這是因為發生了兩個循環。 ynOnly的值變為false之后,您的內部循環終止,但外部循環仍然繼續。 您可能想要這樣的東西-

for (Iterator<Student> it = student.iterator(); it.hasNext();) {

Student stud = it.next();
if(!stud.getStudNum().equals(enterStudNum2))
            continue;                            //you want only that student to be deleted which has enterStudNum2 so let other record skip
do {
    System.out.print("Are you sure you want to delete it?");
    String confirmDelete = scan.next();

    ynOnly = false;

    if (confirmDelete.equalsIgnoreCase("Y")
            && stud.getStudNum().equals(enterStudNum2)) {
        it.remove();
        System.out.print("Delete Successful");
        ynOnly = false;
    } else if (confirmDelete.equalsIgnoreCase("N")) {
        System.out.print("Deletion did not proceed");
        ynOnly = false;
    } else {
        System.out.println("\nY or N only\n");
        ynOnly = true;
    }
} while (ynOnly == true);

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM