Java 打印最大元素及其索引位置
我正在打印数组中的最大元素及其索引。我试过这个Java 打印最大元素及其索引位置,java,Java,我正在打印数组中的最大元素及其索引。我试过这个 int[] a = {10,20,30,40,40}; int index = 0; int max = a[0]; for(int i = 0; i < a.length; i++) { if(a[i] > max) { max = a[i]; index = i; } } System.out.print(max + " " + index); int[]a={10,20
int[] a = {10,20,30,40,40};
int index = 0;
int max = a[0];
for(int i = 0; i < a.length; i++)
{
if(a[i] > max)
{
max = a[i];
index = i;
}
}
System.out.print(max + " " + index);
int[]a={10,20,30,40,40};
int指数=0;
int max=a[0];
for(int i=0;imax)
{
max=a[i];
指数=i;
}
}
系统输出打印(最大+“”+索引);
这张打印的是“40 3”。但我需要“403404”。如何更改代码以打印最大元素40及其索引?您可以找到最大值并检查数组,例如
int[] a = {10, 20, 30, 40, 40};
int max = Arrays.stream(a).max().getAsInt();
for (int i = 0; i < a.length; i++) {
if (a[i] == max) {
System.out.print(max + " " + i);
}
}
int[]a={10,20,30,40,40};
int max=Arrays.stream(a.max().getAsInt();
for(int i=0;i
如果您想找到所有的最大值并以以后可以重用的方式存储它们,您可以使用映射
,将最大值和索引分别设置为值和键。以下是实现这一点的一种方法:
//Max is the value, Key is the index
Map<Integer, Integer> m = new HashMap<>();
int [] a={10,20,30,40,40};
int max=a[0];
for(int i=0;i<a.length;i++)
{
if(a[i] >= max)
{
max=a[i];
//If the value is not inside the map, empty the map
if (!m.containsValue(max))
{
m.clear();
}
//Place the value into the map
m.put(i, max);
}
}
System.out.print(m.toString());
你需要一个地方来存储这些索引;单个int
无法完成此任务。在for循环中,您可以测试当前项是否严格优于上一个最大值。您还需要测试它是否等于以前的最大值,并采取适当的措施。看起来您还需要将index
作为一个列表而不是一个整数,因为您希望它存储可以对应于最大值的多个索引。作为存储元素并稍后打印它们的替代方法,您可以使用两个循环:一个用于确定最大值,另一个用于检查每个元素,以及它是与当前索引一起打印的最大值(在这种情况下,如果(a[i]==max)
,打印的条件将是。如果数组已排序,则可以跳过第一个循环,从最后一个元素中获取最高值,或向后迭代,直到找到较低的元素(这将为您提供“40 4 4 3”)不过除非你先构建一个结果字符串,然后在最后打印出来)。也许你可以将你的索引变成一个字符串,然后在你的大于检查之后,如果(a[i]==max){index+=''i;}
添加类似于的内容。然后你可以根据空格分割你的索引字符串,以获取每个单独的索引进行打印。无论如何,这是一种方法。
{3=40, 4=40}