将项目搜索添加到for循环

时间:2013-09-25 00:08:08

标签: java arrays string

目前我有

public void sellAllBut() {
Iterator<String> i = inventory.iterator();
while (i.hasNext()) {
  if (!i.next().equalsIgnoreCase("pickaxe")) {
    i.remove();
  }   
}

}

现在它只从inventory.class字符串数组中删除该项。如何添加它以便在删除该项目时,使用inventory.goldCoins + = intvalue添加金额;

我的int值是

    //ores
    int copperoPrice = 150;
    int ironoPrice = 200;
    int steeloPrice = 350;
    int goldoPrice = 500;
    int diamondoPrice = 700;
    int pickaxePrice = 500;

并且放入数组的项目是:

    String ore = null;


     if (oreFind <= 50) {
         ore = "Copper ore";

         } 

     if (oreFind >=51) {
         if (oreFind <= 70) {
             ore = "Iron ore";
         }
     }
     if (oreFind >=71) {
         if (oreFind <= 90) {
             ore = "Steel ore";
         }
     }
     if (oreFind >=91) {
         if (oreFind <= 99) {
             ore = "Gold ore";
         }
     }
     if (oreFind == 100) { 
             ore = "Diamond ore";
     }

将字符串值设置为ore后,我使用此行代码将其添加到我的库存字符串数组中:

inventory.addInventory(矿石);

所以例如我的库存可以有:[钻石矿石,金矿石,金矿石]

我能做些什么来为这些中的每一个付出代价并将其放入sellAllBut无效?

1 个答案:

答案 0 :(得分:0)

这有点令人困惑,但你不会只是做一些像;

对于每个矿石价格,创建一个具有矿石名称和价格的对象。

然后让每个对象从接口继承。

现在您有一个集合,您可以使用它的名称和LINQ进行搜索。

然后在你的循环中你可以;

public void sellAllBut() {
Iterator<String> i = inventory.iterator();
while (i.hasNext()) {
  if (!i.next().equalsIgnoreCase("pickaxe")) {
    sellAllBut += ores.where(x => x.name == i).firstOrDefault();
    i.remove();
  }   
}

以上是完全未经测试的,但我认为我正在寻找的方法。如果您需要更多,或者即使这不是您想要的,请告诉我。

修改

实际上,您不需要界面。