Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.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 如何增强AddressBook addEntry()方法?_Java_Variable Assignment_Addressbook_Conditional Statements - Fatal编程技术网

Java 如何增强AddressBook addEntry()方法?

Java 如何增强AddressBook addEntry()方法?,java,variable-assignment,addressbook,conditional-statements,Java,Variable Assignment,Addressbook,Conditional Statements,我有一个通讯簿程序,[1]添加条目[2]删除条目[3]更新/编辑条目[4]查看所有条目[5]查看特定条目 条目存储在数组entry[]中,如下所示: entry[counter] = new AddressBookEntry(); 一切正常,但事情是。。。我想检查用户的输入名称是否已被使用,或者当我询问“输入名称:”时用户是否未键入任何内容: 这是我的addEntry()方法: public void addEntry() { entry[counter] = new Address

我有一个通讯簿程序,[1]添加条目[2]删除条目[3]更新/编辑条目[4]查看所有条目[5]查看特定条目

条目存储在数组
entry[]
中,如下所示:

entry[counter] = new AddressBookEntry();
一切正常,但事情是。。。我想检查用户的输入名称是否已被使用,或者当我询问“输入名称:”时用户是否未键入任何内容:

这是我的
addEntry()
方法:

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++;
}
它允许用户输入任何他喜欢的条目。。。但不检查名称是否已被使用,如果用户将“输入名称:”保留为空,则仍允许用户继续“输入添加::”

以下是我在主程序中的完整代码:

import javax.swing.JOptionPane;
import javax.swing.JTextArea;

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;
        try {
            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!");
                }
            }
        }catch(NumberFormatException e){
            JOptionPane.showMessageDialog(null, "Please Choose a Number in the displayed Menu");
        }
    }

    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() {
        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;
            }
        }
    }
}
import javax.swing.JOptionPane;
导入javax.swing.JTextArea;
公共类通讯簿{
私人地址簿条目[];
专用int计数器;
私有字符串SName;
private int notfound=0;
公共静态void main(字符串[]args){
地址簿a=新地址簿();
a、 条目=新地址簿条目[100];
int选项=0;
试一试{
while(选项!=5){
String content=“选择一个选项\n\n”
+“[1]添加条目\n”
+“[2]删除条目\n”
+“[3]更新条目\n”
+“[4]查看所有条目\n”
+“[5]查看特定条目\n”
+“[6]退出”;
option=Integer.parseInt(JOptionPane.showInputDialog(content));
开关(选件){
案例1:
a、 加法();
打破
案例2:
a、 deleteEntry();
打破
案例3:
a、 editEntry();
打破
案例4:
a、 viewAll();
打破
案例5:
a、 searchEntry();
打破
案例6:
系统出口(1);
打破
违约:
showMessageDialog(null,“无效选择!”);
}
}
}捕获(数字格式){
showMessageDialog(null,“请在显示的菜单中选择一个数字”);
}
}
公共无效补遗(){
条目[计数器]=新地址簿条目();
条目[counter].setName(JOptionPane.showInputDialog(“输入名称”);
条目[计数器].setAdd(JOptionPane.showInputDialog(“输入添加:”);
条目[计数器].setPhoneNo(JOptionPane.showInputDialog(“输入电话号码:”));
条目[counter].setEmail(JOptionPane.showInputDialog(“输入电子邮件:”);
计数器++;
}
公共void viewAll(){
String addText=“NAME\t地址\t电话号码。\t邮件添加\n\n”;
int-nonNull=0;
for(int i=0;i
希望您能帮助我,我是Java新手,我真的不知道要在代码中添加什么以供检查。
*我应该在我的
addEntry()
方法中添加什么来检查名称是否已被使用或没有输入名称?
*我需要像我的
searchMethod()
中那样的条件吗?

地址簿往往是一种给定名称、查找地址和其他信息的东西

因此,这属于一种通用模式,其中有一个键(名称)和一个值(其他信息)

当你看到这一点时,你会想到使用地图

因此,我建议不要将AddressBookEntry放在数组中,而是使用这样的映射

Map<String, AddressBookEntry> addressBook = new HashMap<String, AddressBookEntry>();
地图的好处在于,同一个人只能有一个条目

所以你不必担心如果你把约翰放进监狱会发生什么
addressBook.put("John", new AddressBookEntry());