首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我用一种方法getNumberOfMaxParam来找出三个数字的最大位置。我怎么找到职位?

我用一种方法getNumberOfMaxParam来找出三个数字的最大位置。我怎么找到职位?
EN

Stack Overflow用户
提问于 2020-07-30 08:35:39
回答 3查看 277关注 0票数 0

我使用一个名为getNumberOfMaxParam的方法,它接受三个整数,并按照方法参数的顺序返回第一个最大值的位置。

问题:我不知道如何从3个数字中找到最大位置,我不想打印最大值,我只想打印最大值的位置。

方法应该返回1、2或3。

样本输入1: 12 3 12

样本输出1: 1

代码:(输出在底部)

代码语言:javascript
运行
复制
import java.util.Scanner;

class App {
    public static int getNumberOfMaxParam(int a, int b, int c) {
        int firstMax = Math.max(a, b);
        int highMax = Math.max(firstMax, c);
        return highMax;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        final int a = scanner.nextInt();
        final int b = scanner.nextInt();
        final int c = scanner.nextInt();
        System.out.print(getNumberOfMaxParam(a, b, c));
    }
}

输入:

1

7

8

输出:

8

我不想打印8,这是最大的,但我想打印3,因为这是最大(8)的位置。

如果我把事情搞得太复杂了,谢谢你。:)

EN

Stack Overflow用户

发布于 2020-07-30 08:52:47

如果你有这三个值,我可能会这样做。本质上,只是比较值和跟踪索引与它。如果某物高于当前最大值,则设置新的当前最大值以及最高索引。

代码语言:javascript
运行
复制
public static int getNumberOfMaxParam(int a, int b, int c) {
    int currentMax = a;
    int highestIndex = 1;
    if (currentMax < b) {
        currentMax = b;
        highestIndex = 2;
    }


    if (currentMax < c) {
        currentMax = c;
        highestIndex = 3;
    }

    return highestIndex;
}

我将假设您正在开始学习编程,所以这可能有点多,但如下所示:

如果您想让事情更容易使用,并允许更多的参数,您可以使用以下内容:

代码语言:javascript
运行
复制
public static int getNumberOfMaxParam(int... values) {
    if (values.length == 0) return 0;

    int highestIndex = 1;
    int currentMax = values[0];
    for (int i = 1; i < values.length; i++) {
        if (values[i] > currentMax) {
            currentMax = values[i];
            highestIndex = i + 1;
        }
    }
    return highestIndex;
}

为了解释发生了什么:

int... values定义了一个可变长度的int数组(一个值列表)(这就是三个点的作用所在)。这允许您用任意多的参数调用函数。有关这方面的更多信息,请查阅"Java“。

因此,现在我们有了一个值列表,我们可以遵循一组简单的步骤来获得最高值的索引:

  1. 定义基值(起始最高索引为1,数组中的第一个值为当前最大值) ([0]在索引0处访问元素,这是第一个元素)
  2. 循环遍历剩余值。
  3. 将当前迭代的值与当前最大值进行比较
  4. 如果该值高于当前最大值,则更新该值以及当前最高索引。
  5. 对所有值重复3和4
  6. 返回最高指数

如果你愿意的话,你可以在一个小小的点子上看一下这个解决方案!

票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63169297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档