簡體   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