Java 如何增强AddressBook addEntry()方法?
我有一个通讯簿程序,[1]添加条目[2]删除条目[3]更新/编辑条目[4]查看所有条目[5]查看特定条目 条目存储在数组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
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());