[英]Using an array to store input from the user
我目前正在从事这个项目:
至少创建一个简单的Friends类,并至少包含以下内容:
名称和年龄字段
合适的构造函数
-获取/设置方法
-toString()方法
创建一个ArrayList的好友。
编写一个程序来管理您的朋友列表。
从具有以下选项的菜单中运行程序:
-添加好友
-删除朋友
-显示所有朋友
-出口
我有办法,但是我不确定我朝着正确的方向前进。
到目前为止,这是我得到的:
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;
}
}
我有几个问题:
当我显示朋友时,它显示如下:
约翰
仁
杰夫
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());
}
假设name
和age
数组的大小相同,则可以执行以下操作:
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.