当前位置: 首页 > 知识库问答 >
问题:

如何将对象添加到数组中(如果该对象还不在数组中)

盖翰池
2023-03-14

我到处都找不到一个类似于我的问题的答案,在Java中。我使用的是数组,而不是数组列表。

每次在我的咖啡店下新的订单时,咖啡店必须添加到客户已经访问过的商店数组中,但它应该只出现一次,即使他们访问过两次说‘星巴克’。

我有一个main文件,一个CoffeeShop类,和一个Customer类,这三个文件都在OOP中协同工作。

secondCup.newOrder(bruno, latte); //bruno is a Customer object, latte is a Drink object.
public void newOrder(Customer c, Drink d)
{
    /* 
    double t = markUp*d.calculateCost();
    DrinkOrder o = new DrinkOrder(c, d, t);
    orders[pendingOrders++] = o;

    currentProfit += t - d.calculateCost();

    tracker[trackerSize++] = c;
    totalOrders++;
    */ //above is irrelevant 

    c.addStore(this); //Here is where im adding the store that called the 'newOrder()' method
}

我认为“this”应该是调用“.newOrder()”的特定咖啡店,但大体上,当不同的商店调用newOrder()时,让我们假设:

starBucks.newOrder(bruno, latte);

当我打印访问过的商店数组时,我会得到2个secondCups,而不是同时得到一个secondCups和一个star bucks(我认为这是因为我如何将我的CoffeeShop发送到addStore()或者我如何将该商店添加到访问过的商店数组中)。

下面是我的方法,它应该检查存储区是否已经存在于数组中,如果不存在,则应该将其添加到数组中:

    public void addStore(CoffeeShop shop)
{
    size++;

    for (int i=0; i<size; i++)
    {
        if (visited[i] == null) //if the first position is null (which it will be, add their first shop visited
        {
            visited[i] = shop;
            break;
        }

        else if (visited[i].equals(shop)) //if if the index of the array equals the shop passed, then break the loop AKA dont add it to the array
        {
            break;
        }

        else //if none of the positions equal the shop, add it to the array
        {
            visited[i] = shop;
        }
    }
}

我尝试使用do while,如下所示,但得到的输出与上面的尝试完全相同:

for (int i=0; i<size; i++)
{
    do
    {
        visited[i] = shop; //complete atleast one action, because the customer hasnt visited anystore yet so the first store should always be added
    }
    while (!visited[i].equals(shop)); //add to the array as long as they're not equal

以下是我的输出:

Total coffee orders: 6

Swift, Taylor has visited:
Starbucks
Starbucks
Starbucks

Mars, Bruno has visited:
Second Cup
Second Cup

Ada, Lovelace has visited:
Second Cup

应该是这样的(泰勒光顾星巴克两次,但应该只加一次):

Total coffee orders: 6

Swift, Taylor has visited:
Starbucks
Second Cup

Mars, Bruno has visited:
Starbucks
Second Cup

Ada, Lovelace has visited:
Second Cup
public void displayStoresVisited()
{
    for (int i=0; i<size; i++)
        System.out.println(visited[i].getName());
}
    for (int i=0; i<size; i++)
    {
        if (visited[i] == null)
        {
            visited[i] = shop;
            break;
        }

        else if (visited[i].equals(shop))
        {
            size -= 1;
        }

        else
        {
            continue;
        }
    }
Total coffee orders: 6

Swift, Taylor has visited:
Starbucks
Second Cup
Exception in thread "main" java.lang.NullPointerException
        at Customer.displayStoresVisited(Customer.java:105)
        at TestPhase4.main(TestPhase4.java:82)

共有1个答案

拓拔泉
2023-03-14
int i=0;
while((i<size) && (!visited[i].equals(shop))){
  ++i;
}
if(i>=visited.length){
   //increase the size of your array here.
}
if(i >= size){
   visited[i] = shop;  
   size++;
}


/* get rid of this:
for (int i=0; i<size; i++)
{
    if (visited[i] == null)
    {
        visited[i] = shop;
        break;
    }

    else if (visited[i].equals(shop))
    {
        size -= 1;
    }

    else
    {
        continue;
    }
}
*/
 类似资料:
  • 问题内容: 如何将对象添加到数组(使用javascript或jquery)?例如,此代码有什么问题? 我想使用此代码在function1数组中保存许多对象,并调用function2在数组中使用该对象。 如何将对象保存在数组中? 如何将对象放入数组并将其保存到变量? 问题答案: 使用Array.push()将任何东西放入数组。 有关数组的更多信息 一次添加多个项目 将项目添加到数组的开头 将一个数组

  • 我有一个类来代表一个玩家的手牌。但是,我(在另一个类中)有一个数组列表,我想在其中表示一堆玩家手。问题是我不知道如何在多手牌的数组列表中将一张牌添加到手牌中。我有一个代表卡牌和一副牌的类,效果很好。我只是试图了解如何将对象添加到数组列表中的对象。谢谢!

  • 本文向大家介绍在PHP中,如何将对象元素添加到数组?,包括了在PHP中,如何将对象元素添加到数组?的使用技巧和注意事项,需要的朋友参考一下 代码如下- 示例 输出结果 这将产生以下输出- 创建对象,然后将其推到数组的末尾(以前存在)。 另类

  • 如果我有以下对象数组: 是否有一种方法可以在数组中循环,以检查特定用户名值是否已经存在,如果它什么也不做,但如果它不做,则使用所述用户名(和新ID)向数组中添加一个新对象? 谢谢!

  • 建议我有这个嵌套数组的对象 所以我想用新的动态id将对象插入到服务数组中,我试过了 但我明白了 而我想得到这个 所以我怎么能这样做提前感谢帮助

  • 问题内容: 我搜索了google,但找不到在Swift中将新元素追加到数组对象的方法。出现错误代码“呼叫中参数“名称”缺少参数”。遵循我的代码。 如果您知道任何解决方案,我将非常高兴。谢谢。 问题答案: 只需将元组分配给temp变量: 不知道为什么它不能那样工作-只是检查一个函数,像这样: 结果:该函数有效,而数组方法无效。 更新 :在操场上尝试了以下代码: 结果:当将变量传递给-使用文字元组时,