[英]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.