搜索数组时出现错误消息,不兼容的数据类型

时间:2016-02-03 22:28:33

标签: java arrays jgrasp

我目前收到错误代码

TOOLS.java:48:错误:不兼容的类型:ToolItem []无法转换为int []

运行从.class扩展的程序时

问题在于

int indEX = SearchArray(toolArray, srchnum);

我不确定问题是什么。我唯一能想到的是toolArray包含有关ToolItem类工具的信息,它包含字符串以及整数和双精度,用于存储工具信息,如名称/ ID /数量等。我不知道我去了哪里错误。如果需要,我可以发布.class

public class TOOLS extends ToolItem
{
   // Private members
   private int numberOfItems;
   private ToolItem[] toolArray = new ToolItem[10];

   Scanner keyboard = new Scanner(System.in);

   public TOOLS()
   {
      int numberOfItems = 0;

      for (int i=0; i<10; i++)
      toolArray[i] = new ToolItem();


   }

   // search method
   public static int SearchArray(int[] toolArray, int srchnum)
   {
      int i=0;
      while (i < toolArray.length)
      {
         if (toolArray[i] == srchnum)
            return i;
         else
            i++;

      }
      return -1;

   }

  // calling search method
  public void main(String[] args)
  {
      int srchnum;
      System.out.println("Enter a toolID to search: ");
      srchnum = keyboard.nextInt();
      int indEX = SearchArray(toolArray, srchnum);


      if (indEX == -1)
         System.out.println(" " + srchnum + "No ID match");
      else
         System.out.println(" " + srchnum + "was found at " + indEX);   

  } 
}

1 个答案:

答案 0 :(得分:0)

您宣布private ToolItem[] toolArray = new ToolItem[10];但是您正在调用要求int数组的函数:

public static int SearchArray(int[] toolArray, int srchnum)

根据您的代码,您似乎正在尝试按数组中的索引进行搜索?您可以更改您正在调用的函数的参数,然后使用指定数组上的getIndex()方法将索引与srchnum进行比较。

//Changed first parameter type
public static int SearchArray(ToolItem[] toolArray, int srchnum)
{
  int i=0;
  while (i < toolArray.length)
  {
     //Get the index of the toolArray at position 'i'
     if (toolArray[i].getIndex() == srchnum)
        return i;
     else
        i++;

  }
  return -1;
}