搜索算法 - Java

问题描述:

我发现让搜索算法在Java中正常工作有点困难。基本上,该程序有一个数组初始化。用户应该通过键盘输入一个数字,Java会打印出找到这个数字的所有索引。我的主要问题在于,我想创造出目前看起来如下方法的事实:搜索算法 - Java

public static int[] linsearch(int[] numbers, int key) { 
     int[] indexvalues = null; 
     int n = 0; 
     for (int i = 0; i < numbers.length; i++) { 
      if (numbers[i] == key) { 
       indexvalues[n] = i; 
       n++;} 
     } 

     return indexvalues; 
    } 

这背后的想法是,给定一个数组,一个数字(在这种情况下,通过“钥匙”标识),该程序将创建一个新数组,其中在原始数组中找到的数字“键”的索引将被保存。目前我得到这个错误信息:java.lang.NullPointerException。我尝试了不同的方法来初始化这个数组,但是目前为止还没有成功。因此,任何帮助将非常感激!

+3

这是一个故事,而不是一个问题。调试到你有最小失败例子的地步。 –

+0

好的。我缩短了我的问题。 – Kristian

+0

感谢您的意见。我很抱歉,编程方面还很新颖(仅在2个月前开始),所以请原谅我,如果我的问题有时不像本网站上的所有其他人一样优雅。 – Kristian

主要困难来自您事先并不知道输出数组大小的事实。另一方面,根据需要增长Java数组是可行的,但是令人不快。

有几种方法可以解决这个问题。

如果我是你,我会使用一个集合来存储索引:

public static Collection<Integer> linsearch(int[] numbers, int key) { 
    ArrayList<Integer> indexvalues = new ArrayList<Integer>(); 
    for (int i = 0; i < numbers.length; i++) { 
     if (numbers[i] == key) { 
      indexvalues.add(i); 
     } 
    } 
    return indexvalues; 
} 

你需要修改相应的调用代码。我将这作为练习给读者。