2012-04-11 96 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

相关问题