2012-04-11 97 views
0

我已經寫了我能做的,並且已經到了一個地步,我不知道爲什麼它不保存數據。下面是文件測試,然後是文件和我所做的數組文件。請一些幫助......我需要爲我的課程項目創建一個ArrayList

$

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 

確定後您的建議我能得到它來存儲數據,但現在我有刪除數據的問題。它在刪除數據時不會引發任何錯誤,但數據仍然存在。如果我要完成該編輯,我會重新發布該程序。

+5

重新標記...請注意,文本和代碼之間的比率高到期望有用的答案。考慮將樣本製作得小一些,並詢問更詳細的問題。 – 2012-04-11 01:59:26

回答

2

無論何時想要添加或刪除朋友而不是在類的ArrayList上進行操作,都會創建一個新的ArrayList。做後者請不要前者。換句話說,給你的班級一個ArrayList<Friend>變量,並在你的朋友添加和清除該數組列表中。

0

每次調用添加,刪除或顯示時,都會創建一個新的ArrayList<Friend>。您需要將您的列表保存爲類級字段。

如果你拿走了所有的靜態方法並將它們都設置爲實例級別,那也是最好的。然後您的實例將與特定的朋友列表關聯。

例如:

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

這將意味着您需要實際使用friendList實例變量在你的主要方法,而不是調用靜態方式的方法(即使用friendsList.addFriends()代替FriendList.addFriends()

另外,請注意,我使我的方法的第一個字母小寫。這幾乎是Java中的一個標準。

編輯

您當前的代碼試圖從你的List<Friends>刪除String。它不會刪除任何內容,因爲List中沒有String元素。你將不得不通過列表進行迭代,並找到他的名字是name

所以,你的刪除方法應該是這個樣子的Friend

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

您的建議很有幫助從每種方法中刪除數組實際上是我遇到的最大問題。編輯了一些其他的東西后,我能夠得到它來存儲數據。現在我的問題是刪除數據。我似乎無法從程序中刪除數據。 – 2012-04-11 03:01:39

+0

@ YamidE.Medina查看我的編輯 – 2012-04-11 04:14:25

+0

再次感謝我真的很感激。我很高興我能看到編碼並理解它的含義。一個月前,我會看看那個,並說我在看什麼。它真的幫了我很多,我真的很感激它。 – 2012-04-11 04:54:17

相關問題