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}