首页 > 解决方案 > 如何为文本 rpg 库存创建添加项目功能?

问题描述

存货

vector<string> inventory;
vector<int> inventoryQ;

物品添加功能

void addItem(string item, int quantity){
    for(int i = 0; i < inventory.size(); i++){
      if(inventory[i] == item){
        inventoryQ[i] += quantity;
        cout << "x" << quantity << " " << item << " was added to your inventory." << endl;
      } else if(i == inventory.size()){
        inventory.push_back(item);
        inventoryQ.push_back(quantity);
        cout << "x" << quantity << " " << item << " was added to your inventory." << endl;
      }
    }
  }

它的使用示例

user.addItem("Gold", 1);

也没有文本输出到控制台。

标签: c++functionvector

解决方案


看起来您希望else if(i == inventory.size())在迭代循环而没有找到匹配项时被采用。

麻烦的是,在循环内部这个条件永远不会是 true

只有在循环之后才是真的。

因此,在循环之后移动该逻辑,或者return从匹配条件中移动,或者设置一个布尔值来跟踪发生了什么。


推荐阅读