地址簿中的逻辑问题,不应有空白条目或相同条目...请帮助

发布于 2024-10-18 09:52:49 字数 3944 浏览 4 评论 0原文

希望你能帮助我编码。

我需要做什么: 1.)我不应该允许用户有一个空白条目。我应该提示他们“没有输入名字!” 2.)我不应该允许用户输入相同的条目。

我不知道如何编码,请帮助。

这是我的完整代码:

public class AddressBook {

private AddressBookEntry entry[];
private int counter;
private String SName;
private int notfound=0;

public static void main(String[] args) {
    AddressBook a = new AddressBook();
    a.entry = new AddressBookEntry[100];
    int option = 0;
    while (option != 5) {
        String content = "Choose an Option\n\n"
                + "[1] Add an Entry\n"
                + "[2] Delete an Entry\n"
                + "[3] Update an Entry\n"
                + "[4] View all Entries\n"
                + "[5] View Specific Entry\n"
                + "[6] Exit";
        option = Integer.parseInt(JOptionPane.showInputDialog(content));
        switch (option) {
            case 1:
                a.addEntry();
                break;
            case 2:
                a.deleteEntry();
                break;
            case 3:
                a.editEntry();
                break;
            case 4:
                a.viewAll();
                break;
            case 5:
                a.searchEntry();
                break;
            case 6:
                System.exit(1);
                break;
            default:
                JOptionPane.showMessageDialog(null, "Invalid Choice!");
        }
    }
}

public void addEntry() {
    entry[counter] = new AddressBookEntry();
    entry[counter].setName(JOptionPane.showInputDialog("Enter name: "));
    entry[counter].setAdd(JOptionPane.showInputDialog("Enter add: "));
    entry[counter].setPhoneNo(JOptionPane.showInputDialog("Enter Phone No.: "));
    entry[counter].setEmail(JOptionPane.showInputDialog("Enter E-mail: "));
    counter++;
}

public void viewAll() {
    String addText = "  NAME\tADDRESS\tPHONE NO.\tE-MAIL ADD\n\n";
    int nonNull = 0;
    for (int i = 0; i < entry.length; i++) {
        if (entry[i] != null) {
            addText = addText + entry[i].getInfo() + "\n";
            nonNull++;
        }
        if (nonNull == counter) {
            break;
        }
    }
    JOptionPane.showMessageDialog(null, new JTextArea(addText));
}

public void searchEntry() {
    SName = JOptionPane.showInputDialog("Enter Name to find: ");
    searchMethod();
}

public void searchMethod() {
    for (int i = 0; i < counter; i++) {
        if (entry[i].getName().equals(SName)) {
            JOptionPane.showMessageDialog(null, entry[i].getInfo2());
            notfound = 0;
            break;
        } else {
            notfound++;
        }
    }
    if (notfound != 0) {
        JOptionPane.showMessageDialog(null, "Name Not Found!");
    }
}
public void editEntry() {
    int notfound = 0;
    SName = JOptionPane.showInputDialog("Enter Name to edit: ");
    for (int i = 0; i < counter; i++) {
        if (entry[i].getName().equals(SName)) {
            entry[i] = new AddressBookEntry();
            entry[i].setName(JOptionPane.showInputDialog("Enter new name: "));
            entry[i].setAdd(JOptionPane.showInputDialog("Enter new add: "));
            entry[i].setPhoneNo(JOptionPane.showInputDialog("Enter new Phone No.: "));
            entry[i].setEmail(JOptionPane.showInputDialog("Enter new E-mail: "));
            notfound = 0;
            break;
        } else {
            notfound++;
        }
    }
    if (notfound != 0) {
        JOptionPane.showMessageDialog(null, "Name Not Found!");
    }
}
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;
            break;
        }
    }
}

}

我的代码发生了什么,它允许用户单击“确定”,即使他还没有输入任何字符......并且它还允许相同的输入......

希望你能帮助我。 ..我很快就需要它,但我仍然不知道要在我的代码中添加什么...请帮助,非常感谢..

hope you can help me coding.

What i need to do:
1.) I should not allow user to have a blank entry.. I should prompt them like "No name inputted!"
2.) I should not allow user to input same entry..

I have no Idea how to code i, please help.

Here's my complete code:

public class AddressBook {

private AddressBookEntry entry[];
private int counter;
private String SName;
private int notfound=0;

public static void main(String[] args) {
    AddressBook a = new AddressBook();
    a.entry = new AddressBookEntry[100];
    int option = 0;
    while (option != 5) {
        String content = "Choose an Option\n\n"
                + "[1] Add an Entry\n"
                + "[2] Delete an Entry\n"
                + "[3] Update an Entry\n"
                + "[4] View all Entries\n"
                + "[5] View Specific Entry\n"
                + "[6] Exit";
        option = Integer.parseInt(JOptionPane.showInputDialog(content));
        switch (option) {
            case 1:
                a.addEntry();
                break;
            case 2:
                a.deleteEntry();
                break;
            case 3:
                a.editEntry();
                break;
            case 4:
                a.viewAll();
                break;
            case 5:
                a.searchEntry();
                break;
            case 6:
                System.exit(1);
                break;
            default:
                JOptionPane.showMessageDialog(null, "Invalid Choice!");
        }
    }
}

public void addEntry() {
    entry[counter] = new AddressBookEntry();
    entry[counter].setName(JOptionPane.showInputDialog("Enter name: "));
    entry[counter].setAdd(JOptionPane.showInputDialog("Enter add: "));
    entry[counter].setPhoneNo(JOptionPane.showInputDialog("Enter Phone No.: "));
    entry[counter].setEmail(JOptionPane.showInputDialog("Enter E-mail: "));
    counter++;
}

public void viewAll() {
    String addText = "  NAME\tADDRESS\tPHONE NO.\tE-MAIL ADD\n\n";
    int nonNull = 0;
    for (int i = 0; i < entry.length; i++) {
        if (entry[i] != null) {
            addText = addText + entry[i].getInfo() + "\n";
            nonNull++;
        }
        if (nonNull == counter) {
            break;
        }
    }
    JOptionPane.showMessageDialog(null, new JTextArea(addText));
}

public void searchEntry() {
    SName = JOptionPane.showInputDialog("Enter Name to find: ");
    searchMethod();
}

public void searchMethod() {
    for (int i = 0; i < counter; i++) {
        if (entry[i].getName().equals(SName)) {
            JOptionPane.showMessageDialog(null, entry[i].getInfo2());
            notfound = 0;
            break;
        } else {
            notfound++;
        }
    }
    if (notfound != 0) {
        JOptionPane.showMessageDialog(null, "Name Not Found!");
    }
}
public void editEntry() {
    int notfound = 0;
    SName = JOptionPane.showInputDialog("Enter Name to edit: ");
    for (int i = 0; i < counter; i++) {
        if (entry[i].getName().equals(SName)) {
            entry[i] = new AddressBookEntry();
            entry[i].setName(JOptionPane.showInputDialog("Enter new name: "));
            entry[i].setAdd(JOptionPane.showInputDialog("Enter new add: "));
            entry[i].setPhoneNo(JOptionPane.showInputDialog("Enter new Phone No.: "));
            entry[i].setEmail(JOptionPane.showInputDialog("Enter new E-mail: "));
            notfound = 0;
            break;
        } else {
            notfound++;
        }
    }
    if (notfound != 0) {
        JOptionPane.showMessageDialog(null, "Name Not Found!");
    }
}
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;
            break;
        }
    }
}

}

What happen to my code was it allows user to click "OK" even he doesn't enter any character yet.. and it also allows identical entry...

Hope you can help me... i need it very soon and yet i still have no Idea what to add in my code... please help thanks a lot..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

纸伞微斜 2024-10-25 09:52:49

我的代码发生了什么,它允许用户单击“确定”,即使他还没有输入任何字符......并且它还允许相同的输入......

showInputDialog 方法允许用户输入任何字符串他想要,或者也什么都没有。如果您不想这样做,您可以使用自制的对话框,修补 JOptionPane (使用子类等),或者在它不是给定字符串之一时再次显示对话框,如下所示:

String input = JOptionPane.showInputDialog(content);
try {
   option = Integer.parseInt(input);
}
catch(NumberFormatException ex) {
   // the user typed nothing, or something that is not an integer
   // TODO: show error message
   // => go to next iteration of while loop.
   continue; 
}
// and now our switch ...

What happen to my code was it allows user to click "OK" even he doesn't enter any character yet.. and it also allows identical entry...

The showInputDialog method lets the user input any string he wants, or also nothing. If you don't want this, you can either use a self-made dialog, patch the JOptionPane (using a subclass or such), or simply show the dialog again when it is not one of your given strings, like this:

String input = JOptionPane.showInputDialog(content);
try {
   option = Integer.parseInt(input);
}
catch(NumberFormatException ex) {
   // the user typed nothing, or something that is not an integer
   // TODO: show error message
   // => go to next iteration of while loop.
   continue; 
}
// and now our switch ...
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文