Java地址簿
我必须用java创建一个地址簿。我被困在一个地方。当我添加第二个地址时,它会使第一个地址为空。我已经评论了一些我还没有评论过的地方,所以忽略这些地方。我不知道为什么第一个地址变成空Java地址簿,java,arrays,oop,Java,Arrays,Oop,我必须用java创建一个地址簿。我被困在一个地方。当我添加第二个地址时,它会使第一个地址为空。我已经评论了一些我还没有评论过的地方,所以忽略这些地方。我不知道为什么第一个地址变成空 import java.util.Scanner; import java.io.IOException; import java.io.File; import java.io.FileWriter; import java.io.FileNotFoundException; class Program2 {
import java.util.Scanner;
import java.io.IOException;
import java.io.File;
import java.io.FileWriter;
import java.io.FileNotFoundException;
class Program2 {
static Scanner s = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("\nWelcome. Address book is loaded.");
loop: while(true) {
displayOptions();
int choice = s.nextInt();
switch(choice) {
case 1:
System.out.println("**Choice 1**");
AddressBook.display();
break;
case 2:
System.out.println("**Choice 2**");
System.out.print("First Name: ");
String firstName = s.next();
System.out.print("Last Name: ");
String lastName = s.next();
System.out.print("Phone Number: ");
String phone = s.next();
Contact test = new Contact(firstName, lastName, phone);
AddressBook.add(test);
break;
case 3:
System.out.println("**Choice 3**");
break;
case 4:
System.out.println("**Choice 4**");
break;
case 5:
break loop;
}
}
System.out.println("\nAddress book is saved to file.\n");
System.out.println("Good bye.\n");
System.exit(0);
}
private static void displayOptions() {
System.out.println("\nWhat would you like to do?");
System.out.println(" 1) Display all contacts\n" +
" 2) Add a contact\n" +
" 3) Remove a contact\n" +
" 4) Search a contact\n" +
" 5) Exit");
System.out.print("Your choice: ");
}
}
class Contact {
private String firstName;
private String lastName;
private String phone;
public Contact(String firstName, String lastName, String phone) {
this.firstName = firstName;
this.lastName = lastName;
this.phone = phone;
}
public String getFirstName() {return firstName;}
public String getLastName() {return lastName;}
public String getPhone() {return phone;}
public void setFirstName(String firstName) {this.firstName = firstName;}
public void setLastName(String lastName) {this.lastName = lastName;}
public void setPhone(String phone) {this.phone = phone;}
/*public boolean equals(Object o) {
if (o instanceof Contact) {
Contact contacts = (Contact) o;
return (firstName.equals(contacts.getFirstName()) &&
lastName.equals(contacts.getLastName()));
}
return false;
}*/
public String toString() {
return firstName + " " + lastName + "\t\t" + phone;
}
}
class AddressBook {
public final static int CAPACITY = 100;
static private Contact[] contacts;
static private int count = 0;
static private String addressFile = "address.txt";
static File file = new File(addressFile);
public AddressBook(String addressFile) {
this.addressFile = addressFile;
}
public static boolean add(Contact c) {
contacts = new Contact[CAPACITY];
if (count < CAPACITY) {
contacts[count++] = c;
}
return false;
}
//public boolean remove(fullname) { }
//public Contact search(fullname) { }
public static void display() {
System.out.println("Name\t\t\tPhone Number");
System.out.println("-------------------------------------");
for (int i=0; i<count; i++) {
System.out.println(contacts[i]);
}
System.out.println("-------------------------------------");
}
/*public boolean load() {
try {
Scanner sF = new Scanner(file);
while (s.hasNext()) {
String line = s.nextLine();
System.out.println(line);
}
s.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
/*public boolean save() {
try {
FileWriter writer = new FileWriter(addressFile);
writer.write();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}*/
//public boolean contains(String firstName, String lastName) {
// return this.contacts.contains(firstName, lastName);
//}
}
import java.util.Scanner;
导入java.io.IOException;
导入java.io.File;
导入java.io.FileWriter;
导入java.io.FileNotFoundException;
班级计划2{
静态扫描仪s=新扫描仪(System.in);
公共静态void main(字符串[]args){
System.out.println(“\n加载了elcome.Address book”);
循环:while(true){
显示选项();
int choice=s.nextInt();
开关(选择){
案例1:
System.out.println(“**选项1**”);
AddressBook.display();
打破
案例2:
System.out.println(“**选项2**”);
系统输出打印(“名字:”);
字符串firstName=s.next();
系统输出打印(“姓氏:”);
字符串lastName=s.next();
系统输出打印(“电话号码:”);
字符串phone=s.next();
联系人测试=新联系人(名字、姓氏、电话);
地址簿。添加(测试);
打破
案例3:
System.out.println(“**选项3**”);
打破
案例4:
System.out.println(“**选项4**”);
打破
案例5:
断环;
}
}
System.out.println(“\n服装手册已保存到文件。\n”);
System.out.println(“再见”。\n”);
系统出口(0);
}
私有静态void显示选项(){
System.out.println(“\n您想做什么?”);
System.out.println(“1)显示所有联系人\n”+
“2)添加联系人\n”+
“3)删除联系人\n”+
“4)搜索联系人\n”+
“5)退出”);
System.out.print(“您的选择:”);
}
}
班级联系{
私有字符串名;
私有字符串lastName;
私人电话;
公共联系人(String firstName、String lastName、String phone){
this.firstName=firstName;
this.lastName=lastName;
this.phone=电话;
}
公共字符串getFirstName(){return firstName;}
公共字符串getLastName(){return lastName;}
公共字符串getPhone(){return phone;}
public void setFirstName(字符串firstName){this.firstName=firstName;}
public void setLastName(字符串lastName){this.lastName=lastName;}
public void setPhone(字符串电话){this.phone=phone;}
/*公共布尔等于(对象o){
如果(o触点实例){
触点=(触点)o;
return(firstName.equals(contacts.getFirstName())&&
等于(contacts.getLastName());
}
返回false;
}*/
公共字符串toString(){
返回firstName+“”+lastName+“\t\t”+电话;
}
}
类通讯簿{
公共最终静态int容量=100;
静态私人联系人[]联系人;
静态私有整数计数=0;
静态私有字符串addressFile=“address.txt”;
静态文件文件=新文件(addressFile);
公共通讯簿(字符串地址文件){
this.addressFile=addressFile;
}
公共静态布尔添加(联系c){
触点=新触点[容量];
如果(计数<容量){
触点[count++]=c;
}
返回false;
}
//公共布尔删除(全名){}
//公共联系人搜索(全名){}
公共静态void display(){
System.out.println(“名称\t\t\t电话号码”);
System.out.println(“-----------------------------------------”;
对于(int i=0;i您的add
方法会覆盖contacts
数组,因此每次调用该数组时,对以前的Contact
的引用都会丢失:
public static boolean add(Contact c) {
contacts = new Contact[CAPACITY]; // remove this line
if (count < CAPACITY) {
contacts[count++] = c;
}
return false;
}
您的add
方法会覆盖contacts
数组,因此每次调用该数组时,对上一个Contact
的引用都会丢失:
public static boolean add(Contact c) {
contacts = new Contact[CAPACITY]; // remove this line
if (count < CAPACITY) {
contacts[count++] = c;
}
return false;
}
哇,我错过了这么简单的东西。谢谢!哇,我错过了这么简单的东西。谢谢!