【问题标题】:Java Varargs: find index of a number in arrayJava Varargs:在数组中查找数字的索引
【发布时间】:2020-11-13 06:32:45
【问题描述】:

我正在尝试在数组中查找数字的索引。我正在使用可变参数方法。 我的任务是找到最少的数字,然后找到他的位置。

    public static void main(String[] args) {

        System.out.println(minimum(2.4, 4.5, -11.3, 3.9, -7.2, -12.1, 14.8));
    }
    public static double minimum(double... n) {
        int k = 0;
        double min = n[k];

        for (double i : n) {
            k++;
            if (i < min) {
                min = i;
            }
            if (min == n[k - 1]) {
                System.out.println("minimum number index is " + (k - 1));
            }
        }
        return min;

结果是这样的

index of minimum: 0
index of minimum: 2
index of minimum: 5
-12.1

当我将 System.out.print 放在 for 循环之外时,打印 k 的最后一个值。提前谢谢你。

【问题讨论】:

    标签: java arrays indexing variadic-functions


    【解决方案1】:

    希望这会有所帮助。只需要将最小值索引保存在变量中,就像存储最小值一样。

    public static double minimum(double... n) {
        int k = 0;
        double min = n[k];
        minIndex = k;
    
        for (double i : n) {
            k++;
            if (i < min) {
                min = i;
                minIndex = k-1;
            }
        }
        System.out.println("minimum number index is " + (minIndex));
        return min;
    }
    

    【讨论】:

    • 非常感谢。这解决了这个问题。一切顺利。
    【解决方案2】:

    你快到了!

    正如您正确认识的那样,您的变量 k 包含您在 for 循环中查看的双精度数的 index + 1

    如果要保留数组中最小值的索引,则需要执行与变量min 相同的操作。您需要一个在循环外初始化的附加变量。当您在数组中找到一个新的“较小值”时,您将 k-1 存储在此变量中。

    当您退出 for 循环时,该变量将保存数组中最小值的索引。

    【讨论】:

    • 感谢您的回答。它有帮助。一切顺利。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-14
    • 2022-01-12
    • 2014-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多