Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中实现鞋子库存程序时遇到的问题_Java_Inventory - Fatal编程技术网

在Java中实现鞋子库存程序时遇到的问题

在Java中实现鞋子库存程序时遇到的问题,java,inventory,Java,Inventory,我正在尝试为鞋子实施一个库存计划。我想做的是给每只鞋一个id(productId)和一个库存量(Ammonttopick)。我希望能够要求运行程序的用户输入鞋子id,以获得该类型鞋子的库存量(Ammonttopick)。我的程序目前的问题是它没有返回任何东西,只是一直打印“无效产品id” 我在下面提供了我的代码: public class Product { private String productId = ""; private int ammountToPick = 0; p

我正在尝试为鞋子实施一个库存计划。我想做的是给每只鞋一个id(productId)和一个库存量(Ammonttopick)。我希望能够要求运行程序的用户输入鞋子id,以获得该类型鞋子的库存量(Ammonttopick)。我的程序目前的问题是它没有返回任何东西,只是一直打印“无效产品id”

我在下面提供了我的代码:

public class Product {
  private String productId = "";
  private int ammountToPick = 0;
  private int ammountToRestock = 0;

  public Product (String productId, int ammountToPick){

   this.productId = productId;
   this.ammountToPick = ammountToPick;

  }

  public String getProductId() {
    return productId;
  }

  public int getAmmountToPick() {
    return ammountToPick;
  }

}

public class Shoes extends Product{
  public Shoes(String productId, int ammountToPick){
   super(productId, ammountToPick); 

  }


}

import java.util.Scanner;  
public class Inventory
{
    private static String productId = "";
  private int ammountToPick = 0;
  private int ammountToRestock = 0;
  public static final int MAX_ITEMS = 999999;
  private static Product product [] = new Shoes[MAX_ITEMS];

  public static void main (String args[]){

  buildInventory();
  getInventory();
}

public static void buildInventory(){

product[1] = new Shoes("shoe101", 19);
product[2] = new Shoes("shoe200", 1);
product[3] = new Shoes("shoe420", 9);
}

public static void getInventory() {
  Scanner input = new Scanner(System.in);
  System.out.println("Enter the product id of the product you would like to pick: ");
  String userinput = input.nextLine();
  if(userinput.equals(productId)) {
    System.out.println("there are" + product[1].getAmmountToPick() +"left");
  }
  else {

   System.out.println("invalid product id ");
  }
}
}
在第一行,您的问题是productId在类的顶部被设置为空字符串。如果只按enter键而不输入实际的productId,并且userinput为“”,那么它实际上应该可以工作。但要使其按您希望的方式工作,请去掉productId变量,并检查userinput是否与数组中某个项的productId匹配

你需要做什么

userinput = ...; //this part is fine
for (Product p : products) {
  if (userinput.equals(p.getProductId())) {
    System.out.println('there are ' + p.getAmmountToPick() + " left");
  }
}

Product
Inventory
类都有
productId
成员变量。您正在将
userInput
Inventory
类中的
private static
productId
进行比较,这是一个空字符串

我认为您应该遍历库存数组,寻找与
产品的
productId
的匹配项

这里有一种方法可以通过增强循环实现,而无需使用新方法:

boolean found = false;
for (final Product aProduct: product) {
    if(userInput.equals(aProduct.getProductId())) {
        System.out.println("there are" + aProduct.getAmmountToPick() +"left");
        found = true;
        break;
    }
}
if(!found) {
    System.out.println("invalid product id ");
}
我将
product
成员变量重命名为
products
,这样它的意图就更清楚了。这也会使上面的代码更清晰


Inventory
,以您使用它的方式,不需要
productId
。它应该被删除。

您从未将productId初始化为空字符串以外的任何内容,因此它始终是空字符串。我已更新了我的回答我该如何迭代库存数组?类似这样的内容?public static void getInventory(){Scanner input=new Scanner(System.in);for(int i=0;iboolean found = false; for (final Product aProduct: product) { if(userInput.equals(aProduct.getProductId())) { System.out.println("there are" + aProduct.getAmmountToPick() +"left"); found = true; break; } } if(!found) { System.out.println("invalid product id "); }