【问题标题】:How to find and return the index of the increasingly lowest value in an array Java如何在数组Java中查找并返回越来越低的值的索引
【发布时间】:2020-06-30 00:46:29
【问题描述】:

我有一个数组{ 8, 4, 3, 2, 5, 6, 1, 7 },我希望它返回数组中最小值的索引、数组中下一个最小值的索引等等。

我有这个代码;

private static int getSlotPosition(int[] iArray) {
        int lowestValue;
        lowestValue = iArray[0];
        int slot = 0;
        for (int i = 0; i < iArray.length; i++) {
            if (iArray[i] < lowestValue) {
                lowestValue = iArray[i];
                slot = i;
            }

        }
        return slot;

    }

上面的方法是在for循环中调用的,每次调用都会改变数组的排列方式。

所以我希望在每次调用该方法(假设位置保持不变)之后返回的输出(即索引)是这样的;

  1. 第一次调用后返回的索引是6,cos 1是最小值
  2. 第二次调用后返回的索引是 3,cos 2 是下一个最小值
  3. 第二次调用后返回的索引是 2,cos 3 是下一个最小值,依此类推

请有人帮帮我。谢谢。

【问题讨论】:

  • 你无法指定你想要哪个“最低”;每次你调用这个方法你都会得到“1”。
  • 您好@ElliottFrisch,感谢您的评论,也许我可以将第二个参数传递给该方法并使用它来始终确定最低增加值的索引,但是我该如何实现呢?
  • 你的数组会不会有重复值,数组中值的范围是多少?您可以从列表中删除元素。
  • 不,数组不会有重复值。数组的大小可以根据传入此方法的数组而改变。

标签: java arrays for-loop indexing


【解决方案1】:

您的方法返回一个 int,这意味着它不能返回任何其他 ONE 值。如果你想解决这个任务,你需要用递归来完成,或者让方法返回一个索引最低的数组。

【讨论】:

  • 是的,我希望它始终返回一个值,第一次调用此方法后的最小值的索引,第二次调用此方法后的下一个最小值的索引和以此类推。
  • 那么当它返回时你必须从数组中删除它。您根本无法将相同的参数传递给方法并获得不同的答案。如果你真的想只用一个方法调用来做到这一点,你必须用递归来做,但这不适合初学者
  • 我不想删除每次都获得索引的值。你知道我要如何使用递归吗?
  • 否,因为递归可能非常困难。看到你提出的问题让我认为你应该更多地掌握基础知识。请记住,如果给方法提供相同的输入,您将无法从方法中获得不同的输出。
猜你喜欢
  • 2019-05-15
  • 2015-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多