java-我的ArrayList只返回空值

java-我的ArrayList只返回空值,java,arraylist,null,Java,Arraylist,Null,我对java相当陌生,我不明白为什么我的ArrayList只返回空值 我正在开发一个通讯录应用程序,它应该将人作为对象存储,应该存储全名、地址、城市、州、邮编和电话号码,但在我运行程序后,所有存储的都是空值 人员类别: public class Person implements Comparable<Person>{ private String FULLNAME; private String ADDRESS; private String CITY; private Strin

我对java相当陌生,我不明白为什么我的ArrayList只返回空值

我正在开发一个通讯录应用程序,它应该将人作为对象存储,应该存储全名、地址、城市、州、邮编和电话号码,但在我运行程序后,所有存储的都是空值

人员类别:

public class Person implements Comparable<Person>{
private String FULLNAME;
private String ADDRESS;
private String CITY;
private String STATE;
private String ZIP;
private String PHONE;

public Person(String FULLNAME, String ADDRESS,  String CITY, String STATE, String ZIP, String PHONE) {

}

//GETTERS
public String getFullName(){
    return FULLNAME;
}
public String getAddress(){
    return ADDRESS;
}
public String getCity(){
    return CITY;
}
public String getState(){
    return STATE;
}
public String getZip(){
    return ZIP;
}
public String getPhone(){
    return PHONE;
}

//SETTERS
public void setFullName(String fullname){
    this.FULLNAME = fullname;
}
public void setAddress(String address){
    this.ADDRESS=address;
}
public void setCity(String city){
    this.CITY=city;;
}
public void setState(String state){
    this.STATE=state;
}
public void setZip(String zip){
    this.ZIP=zip;
}
public void setPhone(String phone){
    this.PHONE=phone;
}
public class TestAddressBook {

static Scanner sc= new Scanner(System.in);

static String fullname;
static String address;
static String city;
static String state;
static String zip;
static String phone;
static String in;
static char input;
public static void main(String[] args){
    //Declare Variables to store user input in before its sent to the 
    //Persons Class and stored in the Array List
    //Instance of a Person
    Person person = new Person(fullname, address, city, state, zip, phone);
    //Declaring ArrayList
    ArrayList<Person> AddressBook = new ArrayList<Person>();

    //Launch Menu
    do{
        Menu();
        //gathers user input
        in=sc.nextLine();
        input=in.toUpperCase().charAt(0);
        //decides what to do based on user selection
        switch (input){
        case 'A': 
            addPerson(AddressBook, person);
            break;
        case 'D':
            //deletePerson(AddressBook);
            break;
        case 'M':
            //modifyPerson(AddressBook);
            break;
        case 'S':
            //search(AddressBook);
            break;  
        }
    }while(input!='Q');
    System.out.println("Application Closed");
    System.exit(0);
}

public static void Menu(){
    //User Selection
    System.out.println("Address Book Menu");
    System.out.println("\tEnter A to (A)dd a Person");
    System.out.println("\tEnter D to (D)elete a Person");
    System.out.println("\tEnter M to (M)odify a Person");
    System.out.println("\tEnter S to (S)earch Address Book");
    System.out.println("\tEnter Q to (Q)uit");
    System.out.println("Please enter your choice");
}

public static void addPerson(ArrayList<Person> AddressBook, Person person){
    System.out.println("Please input the person's information (one line per field)");
    //User Input
    System.out.println("\nPlease enter person's full name: ");
    fullname=sc.nextLine();
    person.setFullName(fullname);
    System.out.println("\nPlease enter person's street address: ");
    address=sc.nextLine();
    person.setAddress(address);
    System.out.println("\nPlease enter person's city: ");
    city=sc.nextLine();
    person.setCity(city);
    System.out.println("\nPlease enter person's state: ");
    state=sc.nextLine();
    person.setState(state);
    System.out.println("\nPlease enter person's zip code: ");
    zip=sc.nextLine();
    person.setZip(zip);
    System.out.println("\nPlease enter person's phone number: ");
    phone=sc.nextLine();
    person.setPhone(phone);


    //Set arrayList
    AddressBook.add(new Person(fullname, address, city, state, zip, phone));

    //test to see if values stored
    System.out.println(AddressBook.get(0).getFullName());

}
公共类人员实现可比较{
私有字符串全名;
私有字符串地址;
私人城市;
私有字符串状态;
私人字符串拉链;
私人电话;
公众人物(字符串全名、字符串地址、字符串城市、字符串州、字符串邮编、字符串电话){
}
//吸气剂
公共字符串getFullName(){
返回全名;
}
公共字符串getAddress(){
回信地址;
}
公共字符串getCity(){
回归城市;
}
公共字符串getState(){
返回状态;
}
公共字符串getZip(){
返回拉链;
}
公共字符串getPhone(){
回电话;
}
//二传手
public void setFullName(字符串fullname){
this.FULLNAME=FULLNAME;
}
公共无效设置地址(字符串地址){
这个地址=地址;
}
公共城市(字符串城市){
这个。城市=城市;;
}
公共无效设置状态(字符串状态){
这个状态=状态;
}
公共void setZip(字符串zip){
this.ZIP=ZIP;
}
公用无效设置电话(字符串电话){
这个。电话=电话;
}
TestAddressBook类:

public class Person implements Comparable<Person>{
private String FULLNAME;
private String ADDRESS;
private String CITY;
private String STATE;
private String ZIP;
private String PHONE;

public Person(String FULLNAME, String ADDRESS,  String CITY, String STATE, String ZIP, String PHONE) {

}

//GETTERS
public String getFullName(){
    return FULLNAME;
}
public String getAddress(){
    return ADDRESS;
}
public String getCity(){
    return CITY;
}
public String getState(){
    return STATE;
}
public String getZip(){
    return ZIP;
}
public String getPhone(){
    return PHONE;
}

//SETTERS
public void setFullName(String fullname){
    this.FULLNAME = fullname;
}
public void setAddress(String address){
    this.ADDRESS=address;
}
public void setCity(String city){
    this.CITY=city;;
}
public void setState(String state){
    this.STATE=state;
}
public void setZip(String zip){
    this.ZIP=zip;
}
public void setPhone(String phone){
    this.PHONE=phone;
}
public class TestAddressBook {

static Scanner sc= new Scanner(System.in);

static String fullname;
static String address;
static String city;
static String state;
static String zip;
static String phone;
static String in;
static char input;
public static void main(String[] args){
    //Declare Variables to store user input in before its sent to the 
    //Persons Class and stored in the Array List
    //Instance of a Person
    Person person = new Person(fullname, address, city, state, zip, phone);
    //Declaring ArrayList
    ArrayList<Person> AddressBook = new ArrayList<Person>();

    //Launch Menu
    do{
        Menu();
        //gathers user input
        in=sc.nextLine();
        input=in.toUpperCase().charAt(0);
        //decides what to do based on user selection
        switch (input){
        case 'A': 
            addPerson(AddressBook, person);
            break;
        case 'D':
            //deletePerson(AddressBook);
            break;
        case 'M':
            //modifyPerson(AddressBook);
            break;
        case 'S':
            //search(AddressBook);
            break;  
        }
    }while(input!='Q');
    System.out.println("Application Closed");
    System.exit(0);
}

public static void Menu(){
    //User Selection
    System.out.println("Address Book Menu");
    System.out.println("\tEnter A to (A)dd a Person");
    System.out.println("\tEnter D to (D)elete a Person");
    System.out.println("\tEnter M to (M)odify a Person");
    System.out.println("\tEnter S to (S)earch Address Book");
    System.out.println("\tEnter Q to (Q)uit");
    System.out.println("Please enter your choice");
}

public static void addPerson(ArrayList<Person> AddressBook, Person person){
    System.out.println("Please input the person's information (one line per field)");
    //User Input
    System.out.println("\nPlease enter person's full name: ");
    fullname=sc.nextLine();
    person.setFullName(fullname);
    System.out.println("\nPlease enter person's street address: ");
    address=sc.nextLine();
    person.setAddress(address);
    System.out.println("\nPlease enter person's city: ");
    city=sc.nextLine();
    person.setCity(city);
    System.out.println("\nPlease enter person's state: ");
    state=sc.nextLine();
    person.setState(state);
    System.out.println("\nPlease enter person's zip code: ");
    zip=sc.nextLine();
    person.setZip(zip);
    System.out.println("\nPlease enter person's phone number: ");
    phone=sc.nextLine();
    person.setPhone(phone);


    //Set arrayList
    AddressBook.add(new Person(fullname, address, city, state, zip, phone));

    //test to see if values stored
    System.out.println(AddressBook.get(0).getFullName());

}
公共类TestAddressBook{
静态扫描仪sc=新扫描仪(System.in);
静态字符串全名;
静态字符串地址;
静态字符串城市;
静态字符串状态;
静态字符串压缩;
静态串电话;
静态字符串输入;
静态字符输入;
公共静态void main(字符串[]args){
//声明变量以在将用户输入发送到
//Persons类并存储在数组列表中
//实例
Person-Person=新用户(全名、地址、城市、州、邮编、电话);
//声明ArrayList
ArrayList AddressBook=新的ArrayList();
//启动菜单
做{
菜单();
//收集用户输入
in=sc.nextLine();
输入=in.toUpperCase().charAt(0);
//根据用户选择决定要执行的操作
开关(输入){
案例“A”:
addPerson(地址簿,person);
打破
案例“D”:
//删除人(地址簿);
打破
案例“M”:
//修改人(通讯录);
打破
案例S:
//搜索(通讯录);
打破
}
}while(输入!='Q');
System.out.println(“应用程序关闭”);
系统出口(0);
}
公共静态无效菜单(){
//用户选择
System.out.println(“地址簿菜单”);
System.out.println(“\tEnter A to(A)dd A Person”);
System.out.println(“\tEnter D to(D)elete a Person”);
System.out.println(“\tEnter M to(M)odify a Person”);
System.out.println(“\tEnter S to(S)earch Address Book”);
System.out.println(“\tEnter Q to(Q)uit”);
System.out.println(“请输入您的选择”);
}
公共静态void addPerson(ArrayList地址簿,Person){
System.out.println(“请输入个人信息(每个字段一行)”;
//用户输入
System.out.println(“\n请输入此人的全名:”);
全名=sc.nextLine();
person.setFullName(全名);
System.out.println(“\n请输入此人的街道地址:”);
地址=sc.nextLine();
person.setAddress(地址);
System.out.println(“\n请输入个人所在城市:”);
城市=sc.nextLine();
人.城市(城市);
System.out.println(“\n请输入人员的状态:”);
state=sc.nextLine();
个人。设置状态(状态);
System.out.println(“\n请输入此人的邮政编码:”);
zip=sc.nextLine();
person.setZip(zip);
System.out.println(“\n请输入此人的电话号码:”);
phone=sc.nextLine();
person.setPhone(电话);
//集合数组列表
add(新的人(全名、地址、城市、州、邮编、电话));
//测试以查看是否存储了值
System.out.println(AddressBook.get(0.getFullName());
}
在添加人员结束时,返回的所有内容都是“Null”


任何帮助都将不胜感激,谢谢

问题不在于地址簿,而在于人。不要传递人,也不要使用setter方法

然后,您所要做的就是将每个值设置为String(或int),以便在创建person时传入它们


最后,您需要在构造函数中设置字段。

问题不在于地址簿,而在于人员。不要传入人员,也不要使用setter方法

然后,您所要做的就是将每个值设置为String(或int),以便在创建person时传入它们


最后,您需要在构造函数中设置字段。

您的构造函数从未执行任何操作。您需要为私有实例变量赋值。
例如

this.FULLNAME=FULLNAME;

您的构造函数从未执行任何操作。您需要为您的私有实例变量赋值。
例如

this.FULLNAME=FULLNAME;

这是因为您的构造函数没有执行任何操作

你需要这样的东西

public Person(String fullName, String address,  String city, String state, String zip, String phone) {
    this.fullName = fullName;
    this.address = address;
    ... and so on ...
}

请注意,我已将参数名称更改为camel大小写。这是为了遵守Java命名约定。

这是因为您的构造函数没有执行任何操作

你需要这样的东西

public Person(String fullName, String address,  String city, String state, String zip, String phone) {
    this.fullName = fullName;
    this.address = address;
    ... and so on ...
}

请注意,我已将参数名称更改为camel大小写。这是为了遵守Java命名约定。

您的构造函数不初始化字段:

public Person(String FULLNAME, String ADDRESS,  String CITY, String STATE, String ZIP,
   String PHONE) {
}
应改为

public Person(String FULLNAME, String ADDRESS,  String CITY, String STATE, String ZIP,
   String PHONE) {

  this.FULLNAME=FULLNAME;
  this.ADDRESS=ADDRESS;
  ...
}

构造函数不初始化字段:

public Person(String FULLNAME, String ADDRESS,  String CITY, String STATE, String ZIP,
   String PHONE) {
}
应改为

public Person(String FULLNAME, String ADDRESS,  String CITY, String STATE, String ZIP,
   String PHONE) {

  this.FULLNAME=FULLNAME;
  this.ADDRESS=ADDRESS;
  ...
}

您似乎正在填充一个传入addPerson()方法的人员,然后分别创建一个人员的新实例以添加到数组列表中