Java 调用包含变量int和String的数组

Java 调用包含变量int和String的数组,java,Java,我正在开发一个简单的产品库存程序,允许用户跟踪商店库存。我使用OOP,所以我的程序由两个类组成:一个是包含变量和初始打印方法的类products{}。第二个类称为productdatafinder{}类,它包含一个长表,其中包含以下形式的库存信息: class productsDataFinder { public static void main( String[] not_in_use ) { products[] products_table =

我正在开发一个简单的产品库存程序,允许用户跟踪商店库存。我使用OOP,所以我的程序由两个类组成:一个是包含变量和初始打印方法的类products{}。第二个类称为productdatafinder{}类,它包含一个长表,其中包含以下形式的库存信息:

class  productsDataFinder
{
   public static void main( String[] not_in_use )
   {
      products[]  products_table  =
      {
//Milk products:
         new products( 3333, "Cheese",   "milk product", 1, "A" ),
         new products( 6778, "Butter",    "milk product", 1, "A" ),
         new products( 5642, "Yougurt", "milk product", 1, "A" ),
         new products( 4453, "High fat milk",   "milk product", 1, "A"  ), 
         new products( 3423, "Low fat milk",   "milk product", 1, "A" ),
         new products( 2296, "Coco milk","milk product", 1, "A" ),
         new products( 1796, "Fruit yougurt",  "milk product", 1, "A"   ),

//Fruits:    
         new products( 4379, "Apple",    "Fruit", 3, "B"    ),
下面是它们的定义顺序:int product_id;字符串产品名称;串产品组;int product_过道;串产品_行

现在我的问题是:

我已经知道如何打印每个产品信息,并给出int类型的product_id,但现在我想通过给出String类型的product_名称来完成同样的操作。我该怎么做?我正在寻找一些提示和点击或任何有用的网页链接。以下是程序输出:

 This program prints out your inventory data. 
 The serial number is in the form of (1-9)(1-9)(1-9)(1-9) 
 Insert your serial number: 3333

    Your product id is: 3333
    Your product name is: Cheese
    Your product group is: milk product
    Your product aisle number is: 1
    Your product row number is: A

Process completed
谢谢你,很抱歉给你发了这么长的短信

这是我对可变产品id的打印方法。这是第一类

public void print_products_data()
   {
      System.out.print( "\n    Your product id is: "  +  product_id  +
                        "\n    Your product name is: " +  product_name  +
                        "\n    Your product group is: " + product_group +
                        "\n    Your product aisle number is: " + product_aisle +
                        "\n    Your product row number is: " + product_row) ;
这是第二个

System.out.print("\n This program prints out your inventory data. "
                     + "\n The serial number is in the form of (1-9)(1-9)(1-9)(1-9) "
                     + "\n Insert your serial number: "  ) ;

      Scanner  keyboard  =  new Scanner( System.in ) ;
      int  given_id  =  keyboard.nextInt() ;

      int  products_index  =  0 ;

      boolean table_search_ready  =  false ;

         while ( table_search_ready  ==  false )
         {

         if ( products_index >= products_table.length )
         {

            table_search_ready  =  true ;

                      System.out.print( "\n    Sorry, no such product id "
                           +  given_id  + ".\n" ) ;
         }

         else if ( products_table[ products_index ].get_id()  ==  given_id )
         {
            products_table[ products_index ].print_products_data() ;

            table_search_ready  =  true ;
         }



         else
         {
            products_index  ++  ;
         }

这将与当前查找系统的操作方式相同。但是,检查产品名称(或任何其他属性)而不是检查产品标识

//返回与参数给定名称匹配的产品
//仅适用于唯一名称
公共产品名称查找(字符串名称){
用于(产品p:产品表){
if(name.equals(p.getProductName()))
返回p;
}
}
//如果名称不唯一
公共ArrayList名称查找(字符串名称){
List templast=new ArrayList();
用于(产品p:产品表){
if(name.equals(p.getProductName()))
圣殿骑士。加(p);
}
返回圣殿骑士;
}
您可能正在寻找.equals()方法。你可以用这样的东西来测试它是否适合你

Scanner input = new Scanner(System.in);
System.out.print("Enter product: ");
if(input.nextLine().equals(products_table[0].productName){//or getProductName() if you have that
    //print product data
}
编辑:这里是指向javadoc页面的链接,其中描述了.equals()方法。还可以看看.equalsIgnoreCase(),这样用户就可以输入他想要的任何内容


在迭代product_表时,通过equals test调用print方法

String name="XYZ";
for(int i=0;i<product_table.length;i++) {
if(name.equals(products_table[i].getProduct_name())) {
  //Call print on products_table[i]
}
}
String name=“XYZ”;

对于(int i=0;它的过程将与ID完全相同。只需确保将字符串与
a.equals(b)
进行比较,而不是与
a==b
进行比较。您是否尝试过
products\u table[index].getName().equals(desiredName)
?显示如何打印您可能希望将所有产品放在两个
java.util.Map
中(例如
HashMap
s)并将id用作一个映射的键,将字符串用作另一个映射的键。数组并不真正适合高效查找。因此提示是:查找如何使用哈希表。这里解释了一般概念:除此之外,在Java中,将类名大写并使用小写变量名被认为是一种好的样式:
String name="XYZ";
for(int i=0;i<product_table.length;i++) {
if(name.equals(products_table[i].getProduct_name())) {
  //Call print on products_table[i]
}
}