java - 如何使用 Java 删除地址簿程序中的条目?

标签 java

我在删除地址簿中的条目的逻辑上遇到了问题...我正在使用 ARRAY 保存所有条目。

如果 array[i] 等于用户输入的名称,我会尝试使 array[i] = null,。但是在我删除一个条目然后尝试再次查看所有条目之后,没有任何显示..并且输出显示:

Exception in thread "main" java.lang.NullPointerException
at AddressBook.viewAll(AddressBook.java:61)
at AddressBook.main(AddressBook.java:35)
Java Result: 1

这是我删除条目的代码:

public void deleteEntry() {
        SName = JOptionPane.showInputDialog("Enter Name to delete: ");
        for (int i = 0; i < counter; i++) {
            if (entry[i].getName().equals(SName)) {
                //JOptionPane.showMessageDialog(null, "Found!");
                entry[i] = null;
            }
        }
    }

你能帮我弄清楚我的代码出了什么问题......或者逻辑错误吗?

如果您有任何建议或更好的方法来删除条目,那将是一个很大的帮助..

请帮忙...

最佳答案

if (entry[i].getName().equals(SName)) {

如果你一次通过

entry[i] = null

那你怎么getName()后记呢?

尝试在您的 if 语句中添加空检查

if (entry[i] != null && entry[i].getName().equals(SName)) {

编辑:本杰明提出了一个很好的观点。您应该为 showinputdialog() 的空结果做好准备。例如,有一个取消按钮吗?如果他们按那个,我相信你会得到 null 。这是针对这种情况的一些更好的代码:

public void deleteEntry() {
    /* get the input */
    SName = JOptionPane.showInputDialog("Enter Name to delete: ");
    /* if no input, nothing to delete */
    if(SName == null) return;
    /* find the name */
    for (int i = 0; i < counter; i++) {
        /* make sure we have an entry*/
                                /* we know SName is not null */
        if (entry[i] != null && SName.equals(entry[i].getName())) {
            /* null out the deleted entry */
            entry[i] = null;
            // break; /* If you know you have unique names, you can leave the for loop now */
        } /* end if */
    } /* end for i*/
}

关于java - 如何使用 Java 删除地址簿程序中的条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5043686/

相关文章:

java - Jboss 7.1.1 非法参数异常 : Empty name segment is not allowed for env

从文本文件进行 Java GUI 登录

java - 制作绘图应用程序的屏幕截图 + 绘制 2D 形状的轮廓

c# - Java 注解 C# 等价物

java - Spring 事务注解

java - 定期调用Java Web服务方法

java - Java 是否为任何字符(如 SPACE)定义常量?

java - JSF - 关闭弹出窗口后自动刷新基页

java - Getter 和assertEquals 函数

java - Spring注入(inject)的DataSource为空