Java 数组最大值的索引

Java 数组最大值的索引,java,arrays,Java,Arrays,我需要通过将可变长度数组传递给一个方法来返回整数数组的最大值的索引。如何循环一个数组,然后返回一个或多个值 这就是我迄今为止所做的: public static int methodname3(int d[]) { //separate method with array int largest = 0; int index = 0; for (int i = 0; i < d.length; i++) { if ( d[i] > larg

我需要通过将可变长度数组传递给一个方法来返回整数数组的最大值的索引。如何循环一个数组,然后返回一个或多个值

这就是我迄今为止所做的:

public static int methodname3(int d[]) { //separate method with array

    int largest = 0;
    int index = 0;

    for (int i = 0; i < d.length; i++) {
        if ( d[i] > largest ) 
        {
           largest = d[i];
           index = i;
        }

    }
    return index;
}
publicstaticintmethodname3(intd[]){//用数组分隔方法
int最大=0;
int指数=0;
对于(int i=0;i最大值)
{
最大=d[i];
指数=i;
}
}
收益指数;
}

我的建议是,不要使用int-index,而是使用整数数组,在循环时将索引添加到数组中,然后返回数组

大概是这样的:

        public static int methodname3(int d[])  //separate method with array
    {     
        int largest = 0;
        int index[];
        int c = 0;

    for (int i = 0; i < d.length; i++) {
        if ( d[i] > largest ) 
        {
            largest = d[i];
            index[c] = i;
            c++;
        }

    }
    return index[];
}
public static String methodname3(int d[]){
    int largest = d[0] - 1;
    String indices = "";

    for (int i = 0; i < d.length; i++){
        if (d[i] > largest){
            largest = d[i];
            indices = i; // This resets the String each time a larger value is found
        }
        else if(d[i] == largest){
            indices = indices + " " + i; 
            // This results in a space delimited String of indices
        }
    }

    return indices;
}
publicstaticintmethodname3(intd[])//用数组分隔方法
{     
int最大=0;
int索引[];
int c=0;
对于(int i=0;i最大值)
{
最大=d[i];
指数[c]=i;
C++;
}
}
回报指数[];
}

按照上面的方法,返回一个包含索引的列表

public List<Integer> methodname3(int d[])  //separate method with array
    {     
        int largest = 0;
        List<Integer> index = new ArrayList<Integer>();

    for (int i = 0; i < d.length; i++) {
        if ( d[i] > largest ) 
        {
            largest = d[i];
            index.add(i);
        }

    }
    return index;
}
public List methodname3(int d[])//使用数组分隔方法
{     
int最大=0;
列表索引=新的ArrayList();
对于(int i=0;i最大值)
{
最大=d[i];
索引.添加(i);
}
}
收益指数;
}

这样就行了。正如你所说的,你的输入可以有多个<代码> max 值,并且你想从<方法>代码>返回>代码>你应该考虑某种形式的列表(我使用<代码> AlayList)。在
main
中,只需在列表上迭代
并打印值

public static ArrayList<Integer> getIndices(int[] arr) {
        ArrayList<Integer> output = new ArrayList<Integer>();
        int max = Integer.MIN_VALUE;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] > max) {
                max = arr[i];
            }
        }
        for (int j = 0; j < arr.length; j++) {
            if (arr[j] == max) {
                output.add(j);
            }
        }
        return output;
    }
publicstaticarraylistgetindex(int[]arr){
ArrayList输出=新的ArrayList();
int max=整数的最小值;
对于(int i=0;i最大值){
max=arr[i];
}
}
对于(int j=0;j
如果需要返回多个索引,则需要的不仅仅是int。根据您以后处理数据的计划,我建议返回数组字符串,然后将该值传递给另一个方法进行处理

我建议将问题分为两部分,首先查找并计算最大值的实例数,然后获取最大值的索引。如果要返回数组中的索引,则需要遍历两次(这是使用标准数组,而不是可扩展的ArrayList)。如果希望以字符串形式返回索引,只需执行一次传递

public static int[] methodname3(int d[]) {
    int largest = d[0] - 1; // this makes sure that negative values are checked
    int instances = 0;
    int[] indices = null;

    for (int i = 0; i < d.length; i++){
        if (d[i] > largest){
            largest = d[i];
            instances = 1;
        }
        else if(d[i] == largest){
            instances++;
        }
    }

    indices = new int[instances];

    for(int i = 0, j = 0; i < d.length; i++){
        if(d[i] == largest){
            indices[j] = i;
            j++;
        }
    }

    return indices;
}
公共静态int[]methodname3(int d[]{
int max=d[0]-1;//这确保检查负值
int实例=0;
int[]索引=null;
对于(int i=0;i最大值){
最大=d[i];
实例=1;
}
else如果(d[i]==最大值){
实例++;
}
}
索引=新的int[实例];
对于(int i=0,j=0;i
如果要以字符串形式返回索引,可以在一次传递中完成整个操作,如下所示:

        public static int methodname3(int d[])  //separate method with array
    {     
        int largest = 0;
        int index[];
        int c = 0;

    for (int i = 0; i < d.length; i++) {
        if ( d[i] > largest ) 
        {
            largest = d[i];
            index[c] = i;
            c++;
        }

    }
    return index[];
}
public static String methodname3(int d[]){
    int largest = d[0] - 1;
    String indices = "";

    for (int i = 0; i < d.length; i++){
        if (d[i] > largest){
            largest = d[i];
            indices = i; // This resets the String each time a larger value is found
        }
        else if(d[i] == largest){
            indices = indices + " " + i; 
            // This results in a space delimited String of indices
        }
    }

    return indices;
}
公共静态字符串methodname3(int d[]{
int最大=d[0]-1;
字符串索引=”;
对于(int i=0;i最大值){
最大=d[i];
index=i;//每次找到较大的值时都会重置字符串
}
else如果(d[i]==最大值){
指数=指数+“”+i;
//这将产生一个以空格分隔的索引字符串
}
}
回报指数;
}

这是哪种语言?如果数字都是负数怎么办。。。也许从Integer.MIN_值开始最大是个好主意…
最大值的索引
除非它们都相同,否则可以有多少个最大值?是的-可以使用相同的最大值列表来代替。。。List maxindex=new ArrayList();增加(i);返回类型也不正确,应该是publicstaticlist方法名3(intd[]),谢谢。在第一个解决方案中,我得到了一个变量可能没有被初始化的问题-在这个区域为(inti,j=0;I