我目前正在开展这个项目:
创建一个简单的Friends类,至少包含以下内容:
-name和age字段
适当的施工人员
-get / set methods
-toString()方法
创建好友的ArrayList。
编写一个程序来管理您的朋友列表。
使用以下选项从菜单运行程序:
- 添加好友
- 找朋友
- 显示所有朋友
-exit
这是我到目前为止所得到的:
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();”中加入一个参数,但是当我不知道我的朋友名单时只是说“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;
}
答案 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)
假设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);
答案 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个案例。