为基于文本的游戏编写代码

时间:2013-11-28 02:57:40

标签: java arrays

我正在尝试编写一个从库存中删除项目的方法。它应该从字符串数组中删除该项目,然后将其余项目随机播放到数组的前面。但是,它不起作用。没有抛出任何错误,但该项目仍在那里。

    public static int removeFromInventory(String object, String[] items, int numItems) {

  int objectSlot = 0;
  boolean objFound = false; 

  if(numItems>0){
    for(int i=0;i>numItems ;i++){
      if(object.equalsIgnoreCase(items[i])){
        objectSlot = i;
        numItems++;
        objFound = true;
        break;
      }
    }
    if(objFound){
      items[objectSlot]=null;
      System.out.print(items[objectSlot]);
      for(int n=objectSlot; n < items.length -1;n++){
        items[n] = items[n+1];
      }
      items[items.length -1] = null;
      objFound = false;
    }
  }

  return numItems;

如果有人能指出我正确的方向那将是伟大的。

2 个答案:

答案 0 :(得分:2)

更改

for(int i = 0; i > numItems; i++)

for(int i = 0; i < numItems; i++) // Note the < instead of the >

使用它,因为你现在拥有它,你的第一个循环永远不会执行,因此永远不会找到你的项目。

请注意,您还可以通过仅搜索数组直到您点击第一个numItems条目来消除对null参数的需要。这不是一个大问题,但可能会使事情变得更简单。例如:

for (int i = 0; i < items.length && items[i] != null; i++)

答案 1 :(得分:1)

首先,您尝试更改以下代码

 if(numItems>0){
    for(int i=0;i>numItems ;i++){

 if(numItems>0){
    for(int i=0;i<numItems ;i++){

做出改变并继续前进。