我已经写了我能写的,并且已经到了一个我不能理解为什么它不保存数据的地步。下面是File Test,然后是File,以及我创建的Array文件。请帮帮忙。
$
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好的,在你的建议之后,我能够让它存储数据,但现在我遇到了删除数据的问题。它在删除数据时不会抛出任何错误,但数据会保留下来。如果我会重新发布的程序,如果你与我所做的编辑。
发布于 2012-04-11 10:00:53
每当您想要添加或删除朋友时,您都会创建一个新的ArrayList,而不是对类的ArrayList执行操作。做后者请不要做前者。换句话说,为您的类提供一个ArrayList<Friend>变量,并对该数组列表进行友好的添加和删除操作。
发布于 2012-04-11 10:08:20
你需要了解一个局部变量的生命周期,显然这里你需要一个成员变量。仅供参考:What is the difference between a member variable and a local variable?
发布于 2012-04-11 10:01:04
每次调用Add、Remove或Display时,都会创建一个新的ArrayList<Friend>。您需要将列表保存为类级别字段。
最好去掉所有的静态方法,使它们成为实例级的方法。然后,您的FriendList实例将与特定的朋友列表相关联。
例如:
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
因此,remove方法应该如下所示:
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 RemoveFriendhttps://stackoverflow.com/questions/10098880
复制相似问题