繁体   English   中英

Java数组返回最高数组索引

[英]Java arrays returning highest array index

我应该写一个程序,在未排序的整数数组中找到最大的索引。

使用将整数数组作为参数的方法。 该方法应搜索数组并返回最大值的索引。

因此,我编写了一个返回最高值的程序,例如,它返回13作为最高数字,而不是索引2。那么,我将如何返回索引而不是最高数字本身? 如果这很容易解决,那么我其余的代码看起来正确吗? 谢谢!

public class LargestInteger 
{
    public static void main(String[] args)
    {
        int[] largeArray = {5,4,13,7,7,8,9,10,5};

        System.out.println(findLargest(largeArray));
    }

    public static int findLargest(int array[])
    {
        int largest = array[0];

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

        return largest;
    }
}

在Java 8中,您可以简单地做到这一点:

获得最高的:

int[] largeArray = {5,4,13,7,7,8,9,10,5};
System.out.println(IntStream.of(largeArray).max().getAsInt());

结果:13

并总结一下:

System.out.println(IntStream.of(largeArray).sum());

结果:68

也可以做到,

int[] largeArray     = {5,4,13,7,7,8,9,10,5};
int   largestElement = findLargest(largeArray);
int   index          = Arrays.asList(5,4,13,7,7,8,9,10,5).indexOf(largestElement);

您需要保留并存储最大的索引。 尝试这个:

public static int findLargest(int array[])
{
    int largest = array[0];
    int largestIndex = 0;

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

    return largestIndex;
}

在方法末尾创建一个for循环,并创建一个类似index的变量。 搜索列表,查找变量是否匹配,记住每次都要增加index变量。

例:

int index = 0;
for (int i : array)
{
    if (i == largest)
    {
         break;
    }
    index++;
}
return index;

您可以添加获取最大数字和数组的附加方法,然后搜索该数字的索引:

public class LargestInteger 
{
    public static void main(String[] args)
    {
        int[] largeArray = {5,4,13,7,7,8,9,10,5};

        System.out.println(indexOfLargest(largeArray, findLargest(largeArray)));
    }

    public static int findLargest(int array[])
    {
        int largest = array[0];

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

        return largest;
    }

    public static int indexOfLargest(int array[], int number)
    {

        for (int i = 0; i < array.length; i++) {
            if (array[i] == number)
                return i;            
        }

        return -1;
    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM