【问题标题】:Search algorithm - Java搜索算法 - Java
【发布时间】:2011-09-27 18:05:16
【问题描述】:

我发现让搜索算法在 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;
    }

这背后的想法是给定一个数组和一个数字(在本例中由“key”标识),程序将创建一个新数组,其中数字“key”在原始数组中的索引数组将被保存。目前我收到此错误消息:java.lang.NullPointerException。我尝试了不同的方法来初始化这个数组,但到目前为止都没有成功。因此,任何帮助将不胜感激!

【问题讨论】:

  • 这是一个故事,而不是一个问题。调试到失败示例最少的程度。
  • 好的。我已经缩短了我的问题。
  • 感谢您的意见。很抱歉,我对编程仍然非常非常陌生(仅 2 个月前开始),如果我的问题有时不如本网站上的所有其他问题优雅,请原谅我。

标签: java arrays search


【解决方案1】:

主要困难在于您不提前知道输出数组的大小。另一方面,根据需要增长 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;
}

您需要相应地修改调用代码。我把这个作为练习留给读者。

【讨论】:

    猜你喜欢
    • 2012-10-18
    • 2011-03-17
    • 2014-05-25
    • 2011-12-13
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 2012-07-30
    • 1970-01-01
    相关资源
    最近更新 更多