如何从java中的数组中打印多个最大值[重复]

Posted

技术标签:

【中文标题】如何从java中的数组中打印多个最大值[重复]【英文标题】:how to print multiple max values from an array in java [duplicate] 【发布时间】:2017-12-08 04:03:31 【问题描述】:

我刚开始用 java 编程,我正在尝试一些东西。我编写了一些代码来创建我自己的带有 x 索引的数组,我可以在程序运行时填写这些索引。因此,如果我运行程序,我可以说 x = 5,我将有 5 个索引要填写(例如 5、2、7、4 和 7)。然后程序会找到最大值并打印出来。然后我想知道是否可以让我的程序打印我的 maxValue 在数组中的次数。在上面的示例中,它将是两个。我只是似乎无法找到如何做到这一点。

这是我目前的代码:

import java.util.*;

public class oefeningen 

static void maxValue(int[] newArray)//this method decides the largest number in the array

    int result = newArray[0];
    for (int i=1; i<newArray.length; i++)
        if (newArray[i] > result)
            result = newArray[i];
        
    
        System.out.println("The largest number is: " +result);


public static void main(String[] args) 

    Scanner keyboard = new Scanner(System.in);

    int x; //this is the main part of the array
    System.out.println("Please enter size of array:");
    x = keyboard.nextInt();
    int[] newArray = new int[x];

    for (int j=1; j<=x; j++)//this bit is used for manually entering numbers in the array
        System.out.println("Please enter next value:");
        newArray[j-1] = keyboard.nextInt();
    
    maxValue(newArray);


【问题讨论】:

添加一个计数器变量,当您使用newArray[i] == result 时增加该变量并在您将结果更改为其他值时重置为 1。 添加一个计数器并在每次找到等于当前最大值的元素时将其递增。每次当前最大值更改时将其重置为 1。你应该能够自己解决这个问题 不确定这是如何与另一个问题重复的......似乎这个问题是在问“如何计算等于最大值的项目数?” - 链接的问题与计数元素没有任何关系... 【参考方案1】:

您可以在您的 maxValue 函数中进行跟踪,并在每次发现新的最大值时重置计数器。像这样的:

static void maxValue(int[] newArray)//this method decides the largest number in the array

    int count = 0;
    int result = newArray[0];
    for (int i=1; i<newArray.length; i++)
        if (newArray[i] > result)
            result = newArray[i];
            // reset the count
            count = 1;
        
        // Check for a value equal to the current max
        else if (newArray[i] == result) 
             // increment the count when you find another match of the current max
             count++;
        
    
    System.out.println("The largest number is: " +result);
    System.out.println("The largest number appears " + count + " times in the array");

【讨论】:

【参考方案2】:

只需传递数组和任何值来计算它在数组中出现的次数

public int checkAmountOfValuesInArray(int[] array, int val) 
        int count = 0;
        for (int i = 0; i < array.length; i++) 
            if (array[i]==val) count++;
        
        return count;

或者如果您想在一个循环中完成所有操作:

static void maxValue(int[] newArray) //this method decides the largest number in the array
        int result = newArray[0];
        int count = 1;

        for (int i = 1; i < newArray.length; i++) 
            if (newArray[i] > result) 
                result = newArray[i];
                count = 1;
             else if (newArray[i] == result) 
                count++;
            
        
        System.out.println("The largest number is: " + result+ ", repeated: " + count + " times");
    

【讨论】:

以上是关于如何从java中的数组中打印多个最大值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

用键打印dict中的最大值[重复]

从java中的数组中查找最大,第二大,第二小和最小的int

查找字典的最大值并打印键、值对[重复]

在一个语句中查找无序数组中的最大(或最小)元素,同时保持顺序[重复]

运行分而治之算法后从数组中打印最大子数组值

java 中如何 找出两个集合中的不重复的元素