首页 > 解决方案 > 需要找到最多三个数字的位置

问题描述

我试图找到用户输入的最多三个数字的位置。我不知道如何找到它的位置,但我可以找到最大的数字。

任务如下: 这是名为 getNumberOfMaxParam 的方法,它接受三个整数并按照方法参数的顺序返回第一个最大值的位置。

更新:我正在尝试比较 int abc 但我得到此方法必须返回 int 类型的结果错误 代码:

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);
    
    if (a == highMax) {
      System.out.println("1");
    
    } else if (b == highMax) {
      System.out.println("2");
    
    } else if (c == highMax) {
      System.out.println("3");
    
    } else {
      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));
  }
}

现在如何找到职位?

标签: java

解决方案


您可以使用Streamapi 执行此操作。您只需按照您想要的顺序传递一个值数组。然后创建值的 IntStream 并找到最大值。然后创建索引的 IntStream 并找到数组中的第一个值以查看它是否与 max 匹配,并返回索引。

private static int getIndexOfMax(int... values) {
    int max = IntStream.of(values).max().orElseThrow(IllegalStateException::new);
        
    return IntStream.range(0, values.length)
            .filter(index -> values[index] == max)
            .findFirst().orElseThrow(IllegalStateException::new);
}
int index = getIndexOfMax(1, 2, 3);

assert index == 2;

推荐阅读