0

我目前正在做这个项目:

  1. 创建一个简单的 Friends 类,至少包含以下内容:

    -姓名和年龄字段

    -适当的构造函数

    -get/set 方法

    -toString() 方法

  2. 创建朋友的 ArrayList。

  3. 编写一个程序来管理您的朋友列表。

  4. 从具有以下选项的菜单中运行程序:

    -添加好友

    -删除朋友

    - 显示所有朋友

    -出口

我已经走了一条路,但我不确定我是否朝着正确的方向前进。

这是我到目前为止所得到的:

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

public class Friends
{
    public static void main( String[] args )
    {
        int menu;
        menu = 0;
        int choice;
        choice = 0;


        Scanner input = new Scanner(System.in);
        ArrayList< Friends > name = new ArrayList<  >();
        ArrayList< Friends > age = new ArrayList<  >();

        System.out.println(" 1. Add a Friend ");
        System.out.println(" 2. Remove a Friend ");
        System.out.println(" 3. Display All Friends ");
        System.out.println(" 4. Exit ");
        menu = input.nextInt();

        while(menu != 4)
        {    

        switch(menu)
        {                     

        case 1:
            while(choice != 2)
            {
                System.out.println("Enter Friend's Name: ");
                name.add = input.next();
                System.out.println("Enter Friend's Age: ");
                age.add(input.nextInt());                    
                System.out.println("Enter another? 1: Yes, 2: No");
                choice = input.nextInt();
            } break;

            case 2:
                System.out.println("Enter Friend's Name to Remove: ");
                name.remove(input.next()); break;

            case 3:
                for(int i = 0; i < name.size(); i++)
                {
                System.out.println(name.get(i));
                }
                for(int k = 0; k < age.size(); k++)
                {    
                System.out.println(age.get(k));
                }break;
        }
        System.out.println(" 1. Add a Friend ");
        System.out.println(" 2. Remove a Friend ");
        System.out.println(" 3. Display All Friends ");
        System.out.println(" 4. Exit ");
        menu = input.nextInt();
        }
        System.out.println("Thank you and goodbye!");
}


public String name;
public int age;

public Friends( String friendsName, int friendsAge )
{
    this.name = friendsName;
    this.age = friendsAge;
}
public String toString()
{
    return super.toString();
}
public void setName( String friendsName )
{
    name = friendsName;
} 
public void setAge( int friendsAge )
{
    age = friendsAge;
}
public String getName()
{
    return name;
}
public int getAge()
{
    return age;
}
}   

我有几个问题:

  1. 如何使用 Friends 类来存储用户输入?(第 34 行和第 36 行有什么问题?)
  2. 当我显示朋友时,它会显示:

    约翰·

    ·杰夫
    22
    24
    26

我希望将姓名和年龄放在一起,而不是全部放在一条线上。任何帮助将不胜感激!

这就是我现在所处的位置,但是我搞砸了一些事情,现在它不允许我在“FriendsTest f = new FriendsTest();”中提出论点,但是当我没有朋友列表时,只会说“空 0"

package friends;

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


public class FriendsTest
{
    public static void main( String[] args )
    {
        int menu;       
        int choice;
        choice = 0;      

        Scanner input = new Scanner(System.in);
        ArrayList< FriendsTest > friends = new ArrayList<  >();       

        System.out.println(" 1. Add a Friend ");
        System.out.println(" 2. Remove a Friend ");
        System.out.println(" 3. Display All Friends ");
        System.out.println(" 4. Exit ");
        menu = input.nextInt();

    while(menu != 4)
    {    

    switch(menu)
        {                     

    case 1:
                while(choice != 2)
                {

                System.out.println("Enter Friend's Name: ");
                String name = input.next();
                System.out.println("Enter Friend's Age: ");
                int age = input.nextInt();                               
                FriendsTest f = new FriendsTest(name, age);
                friends.add(f);
                System.out.println("Enter another? 1: Yes, 2: No");
            choice = input.nextInt();
        } break;

            case 2:
                System.out.println("Enter Friend's Name to Remove: ");
                friends.remove(input.next()); break;

            case 3:
                for(int i = 0; i < friends.size(); i++)
                {
                    System.out.println(friends.get(i).name + " " + friends.get(i).age);                        
                }
                break;
        }
    System.out.println(" 1. Add a Friend ");
    System.out.println(" 2. Remove a Friend ");
    System.out.println(" 3. Display All Friends ");
    System.out.println(" 4. Exit ");
    menu = input.nextInt();
    }
    System.out.println("Thank you and goodbye!");

}
public String name;
public int age;
}
4

6 回答 6

1

你的逻辑是错误的。您永远不会构建 Friends 数据结构。此外,您应该有一个朋友数组列表并将其称为朋友:

ArrayList<Friends> friends = new ArrayList<>();

这将存储您的朋友数据结构。接下来您需要做的是将您的朋友信息添加到朋友数据结构中:

 while (choice != 2) {
       System.out.println("Enter Friend's Name: ");
       String name = input.next();
       System.out.println("Enter Friend's Age: ");
       String age= input.nextInt();
       Friends f = new Friends(name, age);
       friends.add(f);
       System.out.println("Enter another? 1: Yes, 2: No");
       choice = input.nextInt();
  }

然后要删除一个朋友,你有一个稍微复杂的方法,你必须遍历 arrayList 朋友,直到找到朋友的名字,然后使用 .remove() 方法。

然后打印你的朋友,你会这样做:

for(int i=0;i<friends.length;i++) {
   friends.get(i).toString();
}

Friends 类中的 toString() 方法应该如下所示:

public void toString()
{
    System.out.println(this.getName() + " " + this.getAge());
}
于 2013-07-18T17:53:28.787 回答
0

假设nameage数组的大小相同,您可以这样做:

case 3:
                for(int i = 0; i < name.size(); i++)
                {
                System.out.println(name.get(i) + age.get(i));
                }     

Friends此外,考虑到您仍然有一个班级,没有理由将年龄和姓名存储在单独的数组中。只需将所有数据存储在一个ArrayList<Friends>

ArrayList<Friends> friendList = new ArrayList<Friends>();
string name ="";
int age ="";

            System.out.println("Enter Friend's Name: ");
            name = input.next();
            System.out.println("Enter Friend's Age: ");
            age = input.nextInt();
            friendList.Add(new Friends(name,age);  
于 2013-07-18T17:50:32.687 回答
0

以下内容无法编译,因为年龄已被定义为类型ArrayList<Friends>

age.add(input.nextInt()); // can't add an `Integer` to a list of `Friends`

为了更正显示修改case 3以使用单个for循环,其中包含println()单个循环

case 3:
    for(int i = 0; i < name.size(); i++)
    {
        System.out.println(name.get(i) + " " + age.get(i));
    }
    break;
于 2013-07-18T17:50:43.177 回答
0

您应该使用一个 ArrayList 来存储所有信息。如果朋友类具有名称和年龄的属性,那么您不需要两个数组列表来存储它们。如果您遵循这种方法,那么

name.Remove(input.next());

将删除名称和年龄。为了在一行中显示姓名和年龄,只使用一个循环来显示两者(假设您将姓名和年龄替换为一个名为 friends 的数组列表):

for(Friend cFriend:friends){
    System.out.println(cFriend.getName()+"\t"+cFreind.getAge());

}

于 2013-07-18T17:51:29.587 回答
0

这里有几个错误。首先,你的数组列表没有正确参数化,你可以只用一个列表来做同样的事情。你想要的是:

ArrayList<Friends> listOfFriends = new ArrayList<Friends>();

然后,您想修改案例 1 以将新的朋友实例添加到列表中,因此您可以编写:

listOfFriends.add(new Friends(name, age));

并且 remove 可以简化为

listOfFriends.remove(new Friends(name, age));

对于第二个问题,您可以通过将 print 语句更改为:

for(int i = 0; i < name.size(); i++)
{
    System.out.println(listOfFriends.get(i).name + " " + listOfFriends.get(i).age);
}
break;

那应该这样做。祝你好运!!

于 2013-07-18T17:54:36.287 回答
0

Java遵循类和对象的概念。您需要做的是创建一个名为 Friend 的类,其中包含必填字段。在不同的 java 文件或类中创建一个 Friend CLASS 的数组列表,该类可能命名为 ManageFriends。还要在此标题下添加 4 个案例。

于 2013-07-18T17:56:26.543 回答