2016-03-03 34 views
0

我试图创建一个基本的AddressBook,并且我对如何让AddressBook类从Main()中创建的两个对象中读取有点困惑。Java - 从几个对象中读取

我创建了一个compareNames()方法,但是你可以看到它不起作用。读取两个条目名称的方法是什么?我是否需要创建一个新的临时变量来存储名称?

这里是我迄今:

import java.util.Scanner; 
class AddressBookDemo { 

public static void main(String[] args) { 

    Scanner sc = new Scanner(System.in); 

    AddressBook name1 = new AddressBook("firstName", "middleName", "lastName", "homeAddress", "businessPhone", 
      "homePhone", "cellPhone", "skypeId", "facebookId", "personalWebSite"); 
    AddressBook name2 = new AddressBook("firstName", "middleName", "lastName", "homeAddress", "businessPhone", 
      "homePhone", "cellPhone", "skypeId", "facebookId", "personalWebSite"); 

    System.out.print("First name: "); 
    name1.setFirstName(sc.nextLine()); 
    System.out.print("Middle name: "); 
    name1.setMiddleName(sc.nextLine()); 
    System.out.print("Last name: "); 
    name1.setLastName(sc.nextLine()); 
    System.out.print("Home address: "); 
    name1.setHomeAddress(sc.nextLine()); 
    System.out.print("Business phone number: "); 
    name1.setBusinessPhone(sc.nextLine()); 
    System.out.print("Home phone number: "); 
    name1.setHomePhone(sc.nextLine()); 
    System.out.print("Cell phone number: "); 
    name1.setCellPhone(sc.nextLine()); 
    System.out.print("Skype ID: "); 
    name1.setSkypeId(sc.nextLine()); 
    System.out.print("Facebook ID: "); 
    name1.setFacebookId(sc.nextLine()); 
    System.out.print("Personal Website: "); 
    name1.setPersonalWebSite(sc.nextLine()); 

    System.out.println("=============================="); 

    System.out.print("First name: "); 
    name2.setFirstName(sc.nextLine()); 
    System.out.print("Middle name: "); 
    name2.setMiddleName(sc.nextLine()); 
    System.out.print("Last name: "); 
    name2.setLastName(sc.nextLine()); 
    System.out.print("Home address: "); 
    name2.setHomeAddress(sc.nextLine()); 
    System.out.print("Business phone number: "); 
    name2.setBusinessPhone(sc.nextLine()); 
    System.out.print("Home phone number: "); 
    name2.setHomePhone(sc.nextLine()); 
    System.out.print("Cell phone number: "); 
    name2.setCellPhone(sc.nextLine()); 
    System.out.print("Skype ID: "); 
    name2.setSkypeId(sc.nextLine()); 
    System.out.print("Facebook ID: "); 
    name2.setFacebookId(sc.nextLine()); 
    System.out.print("Personal Website: "); 
    name2.setPersonalWebSite(sc.nextLine()); 
    } // end of Main 
} // End of class AddressBookDemo 

而且

import java.util.Scanner; 
public class AddressBook { 

Scanner sc = new Scanner(System.in); 

// Declare private variables 
private String firstName; 
private String middleName; 
private String lastName; 
private String homeAddress; 
private String businessPhone; 
private String homePhone; 
private String cellPhone; 
private String skypeId; 
private String facebookId; 
private String personalWebSite; 

// Declare public variables 
public AddressBook(String firstName, String middleName, String lastName, String homeAddress, String businessPhone, 
     String homePhone, String cellPhone, String skypeId, String facebookId, String personalWebSite) { 
    this.firstName = firstName; 
    this.middleName = middleName; 
    this.lastName = lastName; 
    this.homeAddress = homeAddress; 
    this.businessPhone = businessPhone; 
    this.homePhone = homePhone; 
    this.cellPhone = cellPhone; 
    this.skypeId = skypeId; 
    this.facebookId = facebookId; 
    this.personalWebSite = personalWebSite; 

} 

// public AddressBook(String firstName){ 
// this.firstName = firstName; 
// } 
// 
// public AddressBook(String firstName, String middleName){ 
// this.firstName = firstName; 
// this.middleName = middleName; 
// } 
// 
// public AddressBook(String firstName, String middleName, String lastName){ 
// this.firstName = firstName; 
// this.middleName = middleName; 
// this.lastName = lastName; 
// } 

// Setters & Getters 
public void setFirstName(String firstName) { 
    this.firstName = firstName; 
} 

public String getFirstName() { 
    return firstName; 
} 

public void setMiddleName(String middleName) { 
    this.middleName = sc.nextLine(); 
} 

public String getMiddleName() { 
    return middleName; 
} 

public void setLastName(String lastName) { 
    this.lastName = sc.nextLine(); 
} 

public String getLastName() { 
    return lastName; 
} 

public void setHomeAddress(String homeAddress) { 
    this.homeAddress = sc.nextLine(); 
} 

public String getHomeAddress() { 
    return homeAddress; 
} 

public void setBusinessPhone(String businessPhone) { 
    boolean invalidInput = false; 
    do { 
     this.businessPhone = sc.nextLine(); 
     invalidInput = false; 
     try { 
      long l = Long.parseLong(businessPhone.trim()); 
     } catch (NumberFormatException nfe) { 
      invalidInput = true; // Test for invalid input 
      System.out.println("NumberFormatException: Enter only numbers."); 
     } 
    } while (invalidInput == true); 
} 

public String getBusinessPhone() { 
    return businessPhone; 
} 

public void setHomePhone(String homePhone) { 
    boolean invalidInput = false; 
    do { 
     this.homePhone = sc.nextLine(); 
     invalidInput = false; 
     try { 
      long l = Long.parseLong(homePhone.trim()); 
     } catch (NumberFormatException nfe) { 
      invalidInput = true; // Test for invalid input 
      System.out.println("NumberFormatException: Enter only numbers."); 
     } 
    } while (invalidInput == true); 
} 

public String getHomePhone() { 
    return homePhone; 
} 

public void setCellPhone(String cellPhone) { 
    boolean invalidInput = false; // Test for invalid input 
    do { 
     this.cellPhone = sc.nextLine(); 
     invalidInput = false; 
     try { 
      long l = Long.parseLong(cellPhone.trim()); 
     } catch (NumberFormatException nfe) { 
      invalidInput = true; // Test for invalid input 
      System.out.println("NumberFormatException: Enter only numbers."); 
     } 
    } while (invalidInput == true); 
} 

public String getCellPhone() { 
    return cellPhone; 
} 

public void setSkypeId(String skypeId) { 
    this.skypeId = sc.nextLine(); 
} 

public String getSkypeId() { 
    return skypeId; 
} 

public void setFacebookId(String facebookId) { 
    this.facebookId = sc.nextLine(); 
} 

public String getFacebookId() { 
    return facebookId; 
} 

public void setPersonalWebSite(String personalWebSite) { 
    this.personalWebSite = sc.nextLine(); 
} 

public String getPersonalWebSite() { 
    return personalWebSite; 
} 

// Compare names 
public static String compareNames(String name1, String name2) { 

    String comp1 = name1.getfirstName() + " " + name1.getMiddleName().toUpperCase().charAt(0) + ". " 
      + name1.getLastName(); 
    String comp2 = name2.getFirstName() + " " + name2.getMiddleName().toUpperCase().charAt(0) + ". " 
      + name2.getLastName(); 
    System.out.println("Comparing: " + comp1 + " and " + comp2); 
    if (comp1.equalsIgnoreCase(comp2)) { 
     System.out.println("The names match!"); 
    } else { 
     System.out.println("The names don't match!"); 
    } // end if/else statement 
} 

} // end of class AddressBook 
+0

你的Demo类应该做什么? –

+0

你需要在你的演示课上做比较。 – user2277872

+0

添加主要方法的结尾:AddressBook.compareNames(name1,name2); –

回答

1
public static void compareNames(String name1, String name2) { 

你可能是指

public static void compareNames(AddressBook name1, AddressBook name2) { 

注意,返回类型改为void。要回到String,请考虑将System.out.println语句更改为return语句。

+0

不一定。你可以做一下compareNames(name1。firstName,name2.firstName) – user2277872

+1

在此方法的代码中有:'name1.getFirstName()'。它建议'AddressBook' –

1

看起来你想有一个方法来比较两个通讯录实例。在Java中做到这一点,正确的方法是通过通讯簿实现Comparable<AddressBook>,然后实现compareTo(),这样的事情:

public int compareTo(AddressBook other) 
{ 
    //return -1 if this is smaller than other 
    //return 1 if this is larger than other 
    //return 0 if this is equal to other 
} 

现在,您可以使用此方法来通讯录的一个实例比较另一个。另外一个好处是您现在可以使用Collections.sort()对AddressBooks列表进行排序。

1

您正在试图调用getFirstName()getMiddleName()getLastName()Strings这没有任何意义,因为String没有这些方法。只有你的AddressBook类。而是应该通过的AddressBook情况下进入compareNames()方法:

// Compare names 
public static String compareNames(AddressBook name1, AddressBook name2) { 
    ... 
} 

然后你可以从main喜欢叫它:

AddressBook.compareNames(name1, name2); 

更妙的是,你可以把compareNames非静态,只是通过一个AddressBookthis进行比较:

// Compare names 
public String compareNames(AddressBook other) { 

    String comp1 = this.getfirstName() + " " + this.getMiddleName().toUpperCase().charAt(0) + ". " 
      + this.getLastName(); 
    String comp2 = other.getFirstName() + " " + other.getMiddleName().toUpperCase().charAt(0) + ". " 
      + other.getLastName(); 
    System.out.println("Comparing: " + comp1 + " and " + comp2); 
    if (comp1.equalsIgnoreCase(comp2)) { 
     System.out.println("The names match!"); 
    } else { 
     System.out.println("The names don't match!"); 
    } // end if/else statement 
} 

然后你可以从main拨打喜欢:

name1.compareNames(name2); 

此外,您compareNames法说,它返回String,但它不返回任何东西。要么它需要返回String或将返回类型更改为void