2016-02-18 2 views
0

Je suis très novice en programmation et c'est mon premier cours. J'ai beaucoup de mal à comprendre tout le concept et j'espère pouvoir obtenir quelques conseils sur la façon de procéder. Essentiellement, j'ai besoin d'écrire un simple programme de carnet d'adresses qui permet à l'utilisateur d'entrer les informations de 2 (ou plus?) Utilisateurs. On m'a donné les conseils suivants de mon aide bien sûr:Appel et comparaison de plusieurs méthodes d'instance

Dans la principale méthode de mon application (démo ou test) classe - créer deux ou plusieurs instances/objets de la classe AddressBook - utiliser les instances (objets) d'appeler les méthodes d'instance de la classe AddressBook - utilisent 2 instances/objets pour comparer leurs noms

J'ai actuellement les suivantes:

AddressBook.java

import java.util.Scanner; 

public class AddressBook { 

    Scanner sc = new Scanner(System.in); 

    //Declare method variables and initial value (empty) 
    String firstName = ""; 
    String middleName = ""; 
    String lastName = ""; 
    String homeAddress = ""; 
    String businessPhone = ""; 
    String homePhone = ""; 
    String cellPhone = ""; 
    String skypeId = ""; 
    String facebookId = ""; 
    String personalWebSite = ""; 

    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; 
    } 

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

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

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

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

    void setBusinessPhone(String businessPhone) { 
     this.businessPhone = businessPhone; 
    } 

    void setHomePhone(String homePhone) { 
     this.homePhone = homePhone; 
    } 

    void setCellPhone(String cellPhone) { 
     this.cellPhone = cellPhone; 
    } 

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

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

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


    //Getters 
    public String getFirstName() { 
     System.out.print("First name: "); 
     String firstName = sc.nextLine(); 
     return firstName; 
    } 

    public String getMiddleName() { 
     System.out.print("Middle name: "); 
     String middleName = sc.nextLine(); 
     return middleName; 
    } 

    public String getLastName() { 
     System.out.print("Last name: "); 
     String lastName = sc.nextLine(); 
     return lastName; 
    } 

    public String getHomeAddress() { 
     System.out.print("Home address: "); 
     String homeAddress = sc.nextLine(); 
     return homeAddress; 
    } 

    public String getBusinessPhone() { 
     System.out.print("Business phone number: "); 
     String businessPhone = sc.nextLine(); 
     return businessPhone; 
    } 

    public String getHomePhone() { 
     System.out.print("Home phone number: "); 
     String homePhone = sc.nextLine(); 
     return homePhone; 
    } 

    public String getCellPhone() { 
     System.out.print("Cell phone number: "); 
     String cellPhone = sc.nextLine(); 
     return cellPhone; 
    } 

    public String getSkypeId() { 
     System.out.print("Skype ID: "); 
     String skypeId = sc.nextLine(); 
     return skypeId; 
    } 

    public String getFacebookId() { 
     System.out.print("Facebook ID: "); 
     String facebookId = sc.nextLine(); 
     return facebookId; 
    } 

    public String getPersonalWebSite() { 
     System.out.print("Personal Website: "); 
     String personalWebSite = sc.nextLine(); 
     return personalWebSite; 
    } 

    public String compareNames() { 
      String comp1 = name1.getFirstName; 
      String comp2 = name2.getFirstName; 

      if (comp1.equalsIgnoreCase(comp2)) { 
       System.out.println("The names match!"); 
      } else { 
       System.out.println("The names don't match!"); 
      } 
    } 


} // end of class AddressBook 

AddressBookDemo.java

public class AddressBookDemo { 

    public static void main(String[] args) { 

     // Create two AddreeBook objects 
     AddressBook name1 = new AddressBook(); 
     AddressBook name2 = new AddressBook(); 

     // Invoke methods on those objects 
     System.out.println("Enter the first person's info"); 
     name1.getFirstName(); 
      //Testing input/output 
      System.out.println(name1.firstName); 
//  name1.getMiddleName(); 
//  name1.getLastName(); 
//  name1.getHomeAddress(); 
//  name1.getBusinessPhone(); 
//  name1.getHomePhone(); 
//  name1.getCellPhone(); 
//  name1.getSkypeId(); 
//  name1.getFacebookId(); 
//  name1.getPersonalWebSite(); 

     System.out.println("Enter the second person's info"); 
     name2.getFirstName(); 
      //Testing input/output 
      System.out.println(name2.firstName); 
//  name2.getMiddleName(); 
//  name2.getLastName(); 
//  name2.getHomeAddress(); 
//  name2.getBusinessPhone(); 
//  name2.getHomePhone(); 
//  name2.getCellPhone(); 
//  name2.getSkypeId(); 
//  name2.getFacebookId(); 
//  name2.getPersonalWebSite(); 


    } // end of Main 

} // End of class AddressBookDemo 

Comme vous pouvez le voir, je reçois des erreurs constructeur lorsque vous essayez d'initialiser les deux instances de AddressBook de classe(). Si j'essaie d'ajouter un argument de 'null', je reçois simplement un retour de 'null' quand je teste la sortie après avoir invoqué les méthodes. J'ai également créé la méthode compareName() dans la main mais je ne l'ai pas encore appelée puisque je ne peux même pas faire fonctionner la première partie. De plus, je suis un peu confus comment je suis censé obtenir les valeurs de name1.firstName et name2.firstName renvoyé à main (ou devrais-je simplement stocker la valeur dans une autre variable et créer une boucle incrémentale chaque fois que getFirstName() est appelé?).

+2

Les constructeurs sont utilisés pour construire des objets. Il ne semble pas que vous passiez quelque chose de significatif pour construire le carnet d'adresses avec. –

+0

Les getters ne sont pas supposés recevoir d'entrées de l'utilisateur - ils devraient juste retourner ce qui est déjà dans l'objet. Votre méthode principale devrait tout faire avec l'analyseur, puis appeler les setters pour définir les champs de manière appropriée, ou mieux encore, en passant les arguments dans le constructeur 'AddressBook'. –

+0

Enfin, 'String middleName = sc.nextLine();' ne définit-il pas le champ 'middleName' dans l'objet' AddressBook'; il crée une nouvelle variable qui arrive à avoir le même nom. Même pour ce que vous essayez de faire, vous devriez simplement écrire 'middleName = sc.nextLine()' sans le 'String'. –

Répondre

0

dans votre classe principale, vous devez passer dans les valeurs que vous voulez enregistrer dans votre carnet d'adresses, à savoir

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

Cela définira une nouvelle name1 de type AddressBook les informations ci-dessus. Vous pouvez également envisager de créer une ArrayList de type AddressBook, qui stockera de nombreuses instances de la classe AddressBook.

ArrayList<AddressBook> myAddressBook = new ArrayList(); 

Ensuite, vous devez ajouter un objet à la ArrayList:

myAddressBook.add(new AddressBook(("firstName", "middleName", 
     "lastName", "homeAddress", "businessPhone", 
     "homePhone", "cellPhone", "skypeId", 
     "facebookId", "personalWebSite")); 
+0

merci mais on m'a dit d'éviter d'utiliser des tableaux pour l'affectation car il est revu dans les chapitres suivants. Pour être honnête, j'ai dû envoyer un email à mon aide pour savoir comment ils s'attendaient à ce que je le fasse sans l'utilisation d'un tableau ... – Chris

+0

alors vous devrez créer plusieurs objets AddressBook. Vous pouvez utiliser le scanner pour obtenir un nombre, ce qui correspond au nombre de contacts à créer, puis utiliser une boucle pour créer le nombre de contacts nécessaire. – tmaxxcar

+0

Oh, c'est vraiment une très bonne suggestion, merci! – Chris

0

C'est ce que j'ai fini avec l'aide de certains des conseils donnés ici. Je vais rester avec seulement 2 contacts puisque c'est ce que la mission a demandé;

Addressbook.java

import java.util.Scanner; 

public class AddressBook { 

    Scanner sc = new Scanner(System.in); 

    //Declare method variables and initial value (empty) 
    String firstName = ""; 
    String middleName = ""; 
    String lastName = ""; 
    String homeAddress = ""; 
    String businessPhone = ""; 
    String homePhone = ""; 
    String cellPhone = ""; 
    String skypeId = ""; 
    String facebookId = ""; 
    String personalWebSite = ""; 

    public String getFirstName() { 
     System.out.print("First name: "); 
     firstName = sc.nextLine(); 
     return firstName; 
    } 

    public String getMiddleName() { 
     System.out.print("Middle name: "); 
     middleName = sc.nextLine(); 
     return middleName; 
    } 

    public String getLastName() { 
     System.out.print("Last name: "); 
     lastName = sc.nextLine(); 
     return lastName; 
    } 

    public String getHomeAddress() { 
     System.out.print("Home address: "); 
     homeAddress = sc.nextLine(); 
     return homeAddress; 
    } 

    public String getBusinessPhone() { 
     System.out.print("Business phone number: "); 
     businessPhone = sc.nextLine(); 
     return businessPhone; 
    } 

    public String getHomePhone() { 
     System.out.print("Home phone number: "); 
     homePhone = sc.nextLine(); 
     return homePhone; 
    } 

    public String getCellPhone() { 
     System.out.print("Cell phone number: "); 
     cellPhone = sc.nextLine(); 
     return cellPhone; 
    } 

    public String getSkypeId() { 
     System.out.print("Skype ID: "); 
     skypeId = sc.nextLine(); 
     return skypeId; 
    } 

    public String getFacebookId() { 
     System.out.print("Facebook ID: "); 
     facebookId = sc.nextLine(); 
     return facebookId; 
    } 

    public String getPersonalWebSite() { 
     System.out.print("Personal Website: "); 
     personalWebSite = sc.nextLine(); 
     return personalWebSite; 
    } 

} // end of class AddressBook 

AddressBookDemo.java

public class AddressBookDemo { 

    public static void main(String[] args) { 

     // Create two AddreeBook objects 
     AddressBook name1 = new AddressBook(); 
     AddressBook name2 = new AddressBook(); 

     // Invoke methods on those objects 
     System.out.println("Enter the first person's info"); 
     name1.getFirstName(); 
     name1.getMiddleName(); 
     name1.getLastName(); 
     name1.getHomeAddress(); 
     name1.getBusinessPhone(); 
     name1.getHomePhone(); 
     name1.getCellPhone(); 
     name1.getSkypeId(); 
     name1.getFacebookId(); 
     name1.getPersonalWebSite(); 

     System.out.println("Enter the second person's info"); 
     name2.getFirstName(); 
     name2.getMiddleName(); 
     name2.getLastName(); 
     name2.getHomeAddress(); 
     name2.getBusinessPhone(); 
     name2.getHomePhone(); 
     name2.getCellPhone(); 
     name2.getSkypeId(); 
     name2.getFacebookId(); 
     name2.getPersonalWebSite(); 

     // Compare names 
     String comp1 = name1.firstName + " " + name1.middleName.toUpperCase().charAt(0) + ". " + name1.lastName; 
     String comp2 = name2.firstName + " " + name2.middleName.toUpperCase().charAt(0) + ". " + name2.lastName; 
     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 Main 

} // End of class AddressBookDemo 

Merci pour l'aide de tout le monde! Très appréciée.

+0

Dans votre classe AddressBook, vous pourriez vouloir séparer vos getters et setters. 'public String getFirstName() { Renvoie firstName; Public void setFirstName() { this.firstName } ' – tmaxxcar