搜索算法 - 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。我尝试了不同的方法来初始化这个数组,但是目前为止还没有成功。因此,任何帮助将非常感激!
答
主要困难来自您事先并不知道输出数组大小的事实。另一方面,根据需要增长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;
}
你需要修改相应的调用代码。我将这作为练习给读者。
这是一个故事,而不是一个问题。调试到你有最小失败例子的地步。 –
好的。我缩短了我的问题。 – Kristian
感谢您的意见。我很抱歉,编程方面还很新颖(仅在2个月前开始),所以请原谅我,如果我的问题有时不像本网站上的所有其他人一样优雅。 – Kristian