java - 需要找到最多三个数字的位置
问题描述
我试图找到用户输入的最多三个数字的位置。我不知道如何找到它的位置,但我可以找到最大的数字。
任务如下: 这是名为 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));
}
}
现在如何找到职位?
解决方案
您可以使用Stream
api 执行此操作。您只需按照您想要的顺序传递一个值数组。然后创建值的 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;
推荐阅读
- javascript - 如何解决屏幕触摸问题?
- amazon-web-services - 在上传到 S3 之前替换文件中的字符串
- asp.net-mvc - 从 Ajax.ActionLink C# MVC 的视图中删除记录
- php - 如何从mysqli查询中将文本彼此相邻
- mysql - MariaDB 表中唯一的不可预测随机数(不仅仅是增量)
- c# - 当前上下文中不存在名称“ViewH”(C#)
- python - 如何将单行维度附加到 ndarray 形状?
- javascript - 包装列表项标签带着
- 标签
- java - 使用 MaterializeCSS 和 Thymeleaf 的复选框输入
- visual-studio - 在 Visual Studio 2019 中使用 VSCode 键盘快捷键