使用数组存储来自用户的输入

时间:2013-07-18 17:43:50

标签: java arrays

我目前正在开展这个项目:

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

    -name和age字段

    适当的施工人员

    -get / set methods

    -toString()方法

  2. 创建好友的ArrayList。

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

  4. 使用以下选项从菜单运行程序:

    - 添加好友

    - 找朋友

    - 显示所有朋友

    -exit

  5. 我已经找到了办法,但我不确定自己是朝着正确的方向前进。

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

    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

    3. 我想把名字和年龄放在一起,而不是一行。任何帮助将不胜感激!

      这就是我现在所处的位置,但我搞砸了一些东西,现在它不允许我在“FriendsTest f = new FriendsTest();”中加入一个参数,但是当我不知道我的朋友名单时只是说“null 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;
      }
      

6 个答案:

答案 0 :(得分:1)

你的逻辑是关闭的。您永远不会构建好友数据结构。你还应该有一个朋友的arrayList并称之为朋友:

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

答案 1 :(得分: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);  

答案 2 :(得分:0)

以下内容无法编译,因为 age 已定义为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;

答案 3 :(得分:0)

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

name.Remove(input.next());

将删除姓名和年龄。 为了在一行中显示名称和年龄,只使用一个循环来显示这两个(假设你用名为friends的一个arraylist替换名字和年龄):

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

}

答案 4 :(得分:0)

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

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

然后你想要修改你的案例1,以便在列表中添加一个新的朋友实例,所以你要写:

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

和删除可以简化为

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;

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

答案 5 :(得分:0)

Java遵循类和对象的概念。您需要做的是创建一个名为Friend的Class,其中包含必填字段。在另一个java文件或类中创建一个Friend CLASS的arraylist,也可以命名为ManageFriends。另外还要加上4个案例。