繁体   English   中英

使用数组存储用户输入

[英]Using an array to store input from the user

我目前正在从事这个项目:

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

    名称和年龄字段

    合适的构造函数

    -获取/设置方法

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

你的逻辑不对。 您永远不会构造Friends数据结构。 另外,您应该有一个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());
}

假设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);  

由于年龄已定义为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;

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

name.Remove(input.next());

将同时删除姓名和年龄。 为了在一行中同时显示姓名和年龄,请仅使用一个循环以这样的方式显示两者(假设您用一个称为好友的数组列表替换姓名和年龄):

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

}

这里有一些错误。 首先,没有正确设置数组列表的参数,仅用一个列表就可以执行相同的操作。 您想要的是:

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;

那应该做。 祝好运!!

Java遵循类和对象的概念。 您要做的是使用必填字段创建一个名为Friend的类。 在另一个Java文件或类(可能名为ManageFriends)中创建Friend CLASS的数组列表。 还要在此标题下添加4个案例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM