2012-04-11 5 views
0

Ich habe geschrieben, was ich kann und zu einem Punkt gekommen, wo ich nicht herausfinden kann, warum es die Daten nicht speichert. Unten ist der Dateitest, dann die Datei und die Array-Datei, die ich gemacht habe. bitte etwas Hilfe ...Ich muss eine ArrayList für mein Klassenprojekt erstellen

$

import java.util.Scanner; 

public class FriendsListTest 

{ 

public static void main(String[] args) 
{ 
    FriendsList friendsList = new FriendsList(); 

    char selection; 
    Scanner input = new Scanner(System.in); 
    do 
     { 
      //display menu 
      System.out.println("\n--------------"); 
      System.out.println("Main Menu\n"); 
      System.out.println("1. Add a friend "); 
      System.out.println("2. Delete a friend "); 
      System.out.println("3. Show List "); 
      System.out.println("4. Exit"); 

      //selection results 
      selection = input.next().charAt(0); 

      switch(selection){ 
      case '1': 
       FriendsList.AddFriends(); 
       break; 
      case '2': 
       FriendsList.RemoveFriend(); 
       break; 
      case '3': 
       FriendsList.DisplayArray();  
       break; 
      case '4': 
       break; 
      default: 
       System.out.println("Invalid Selection"); 
     }//end Switch 

}while(selection != 4);//end do 

}//end main 

}//end FriendsListTest 

$

$ $

import java.util.Scanner; 
import java.util.ArrayList; 

public class FriendsList 
{ 

public static void AddFriends() 
{ 
    Scanner input = new Scanner(System.in); 
    ArrayList<Friends> friend = new ArrayList<Friends>(20); 

    System.out.println("\n--------------"); 
    System.out.println("Please enter Name"); 
    String name = input.nextLine(); //reads name 
    System.out.println("Please enter Age"); 
    int Age = input.nextInt(); 
    friend.add(new Friends(Age, name)); 

}//end AddFriends 
public static void RemoveFriend() 
{ 
    ArrayList<Friends> friend = new ArrayList<Friends>(20); 
    Scanner input = new Scanner(System.in); 

    System.out.println("\n--------------"); 
    System.out.println("Please enter Name of person you wish you remove"); 
    String name = input.nextLine(); 
    friend.remove(name); 

}//End RemoveFriend 
public static void DisplayArray() 
{ 
    ArrayList<Friends> friend = new ArrayList<Friends>(20); 
    System.out.print(friend); 

}//end DisplayArray 

}//end class FriendsList 

$

class Friends 
{ 
    private String nName; 
    private int nAge; 
    public Friends(int Age, String name) 
{ 
    nName = name; 
    nAge = Age; 
} 
public String getName() 
{ 
    return nName; 
} 
public int getAge() 
{ 
    return nAge; 
} 
}//end class person 

Ok, nachdem Ihre Vorschläge ich in der Lage war, um es zu speichern, Daten, aber jetzt habe ich das Problem, Daten zu entfernen. Beim Entfernen von Daten werden keine Fehler ausgegeben, die Daten bleiben jedoch erhalten. Wenn ich das Programm erneut posten würde wenn du mit den Änderungen die ich gemacht habe.

+5

Re-tagged ... Beachten Sie, dass das Verhältnis zwischen Text und Code zu hoch ist, um eine sinnvolle Antwort zu erwarten. Überlegen Sie, ob Sie die Stichprobe viel kleiner machen und genauere Fragen stellen. –

Antwort

2

Sie erstellen eine neue ArrayList, wenn Sie einen Freund hinzufügen oder entfernen möchten, anstatt auf eine ArrayList der Klasse zu reagieren. Tun Sie das letztere bitte nicht das ehemalige. Mit anderen Worten, geben Sie Ihrer Klasse eine ArrayList<Friend> Variable und machen Sie Ihre Freund hinzufügen und entfernen auf dieser Array-Liste.

0

Sie erstellen ein neues ArrayList<Friend> jedes Mal, wenn Hinzufügen, Entfernen oder Anzeigen aufgerufen wird. Sie müssen Ihre Liste als ein Feld auf Klassenebene speichern.

Es wäre auch am besten, wenn Sie alle statischen Methoden entfernen und sie alle Instanzlevel machen würden. Dann würde Ihre FriendList Instanz einer bestimmten Liste von Freunden zugeordnet werden.

Zum Beispiel:

public class FriendsList 
{ 

private List<Friend> friends = new ArrayList<Friend>(); 

public void addFriends() 
{ 
    Scanner input = new Scanner(System.in); 

    System.out.println("\n--------------"); 
    System.out.println("Please enter Name"); 
    String name = input.nextLine(); //reads name 
    System.out.println("Please enter Age"); 
    int Age = input.nextInt(); 
    friends.add(new Friends(Age, name)); 

}//end AddFriends 
public void removeFriend() 
{ 
    Scanner input = new Scanner(System.in); 

    System.out.println("\n--------------"); 
    System.out.println("Please enter Name of person you wish you remove"); 
    String name = input.nextLine(); 
    friends.remove(name); 

}//End RemoveFriend 
public void displayArray() 
{ 
    System.out.print(friends); 
} 

Das würde bedeuten, dass Sie tatsächlich benötigen, um Ihre friendList Instanzvariable in der Hauptmethode zu verwenden, anstatt diese Methoden in einer statischen Weise Aufruf (dh verwenden friendsList.addFriends() statt FriendList.addFriends())

Beachten Sie auch, dass ich den ersten Buchstaben meiner Methoden in Kleinbuchstaben geschrieben habe. Das ist so ziemlich Standard in Java.

EDIT

Ihr aktueller Code versucht, ein String von Ihrem List<Friends> zu entfernen. Es entfernt nichts, weil es keine String Elemente in der List gibt. Du gehst durch die Liste zu haben, zu wiederholen und die Friend dessen Name ist name

So Ihre remove-Methode wie folgt aussehen sollte:

public void removeFriend() 
{ 
    Scanner input = new Scanner(System.in); 

    System.out.println("\n--------------"); 
    System.out.println("Please enter Name of person you wish you remove"); 
    String name = input.nextLine(); 

    Friends friendToRemove = null; 
    for (Friends friend : friends) { 
    if (name.equals(friend.getName()) { 
     friendToRemove = friend; 
    } 
    } 

    if (friendToRemove != null) { 
    friends.remove(friendToRemove) 
    } 

}//End RemoveFriend 
+0

Ihr Vorschlag war hilfreich das Entfernen der Array von jeder Methode war eigentlich das größte Problem, das ich hatte. Nachdem ich ein paar andere Dinge bearbeitet hatte, konnte ich die Daten speichern.Jetzt ist mein Problem das Entfernen der Daten. Ich kann anscheinend nicht in der Lage sein, die Daten vom Programm zu entfernen. –

+0

@ YamidE.Medina Siehe meine Bearbeitung –

+0

Nochmals vielen Dank, ich schätze es wirklich. Ich bin froh, dass ich die Codierung sehen und verstehen kann, was es bedeutet ... vor einem Monat hätte ich mir das angesehen und gesagt, was ich ansehe. Es hat wirklich geholfen, ich schätze es wirklich. –

Verwandte Themen