返回整数数组中的最大数字

时间:2014-12-09 21:28:07

标签: java arrays methods

我正在尝试让我的程序从一个整数数组中打印出最大的值。 cVoteA是特定候选人(cNameA)的投票数。 使用GUI.getInt

手动输入cVoteA和cNameA的值

每次运行程序时,它都只会打印出第一个名字,我无法弄清楚如何打印出最大的名称。

//WinnerM value method
    public static String WinnerM(String cNameA[], int cVoteA[], int thresh, int winner)
    {
        int total = cVoteA[0]; //Declare the total variable and set it to 0
        int iv = 0;
        for (iv = 0; iv < cVoteA.length; iv++)
        {
            if(cVoteA[iv] > total)
            {
                winner = cVoteA[iv];
            }
        }
        return cNameA[winner]; //Return candidate name
    }

这是方法的名称

//FIND WINNER
        int winner = 0;
        WinnerM(cNameA, cVoteA, thresh, winner);

        System.out.println("Winner     " + "          " + cNameA[winner]); //Print Winner and the name of the candidate with most votes

感谢任何帮助

在BlueJ中使用Java语言

3 个答案:

答案 0 :(得分:0)

  1. 将cVotaA(winner)的最大位置的变量初始化为第一个数组元素。
  2. cVoteA(iv)与目前为止的最大cVoteA进行比较,cVoteA(winner)
  3. 当您找到新的最大值时,请将下标(iv)保存到winner
  4. 使用最大值(winner)的下标输出值和名称。

答案 1 :(得分:0)

您正在为cVoteA [iv]中包含的任何值设置胜利者。然后使用该值作为cNameA的索引。这很危险并且可能会崩溃,具体取决于您如何初始化阵列cVoteA。

数组索引引用该索引处特定候选人的姓名和投票数。您不能使用投票数(存储在cVoteA []中)作为名称数组cNameA的索引。

在获胜者中,您应该存储INDEX,而不是来自cVoteA []的值:

public static String WinnerM(String cNameA[], int cVoteA[], int thresh, int winner)
{
    int total = 0; //Declare the total variable and set it to 0
    int iv = 0;
    for (iv = 0; iv < cVoteA.length; iv++)
    {
        if(cVoteA[iv] > total)
        {
            winner = iv;
        }
    }
    return cNameA[winner]; //Return candidate name
}

答案 2 :(得分:0)

让函数返回获胜者的索引,而不是他的名字。

public static int WinnerM(int cVoteA[])
{
    int iv, winner = largest = 0;
    for (iv = 0; iv < cVoteA.length; iv++)
    {
        if(cVoteA[iv] > largest)
        {
            largest = cVoteA[iv];
            winner = iv;
        }
    }
    return winner;
}

//FIND WINNER

    int winner = WinnerM(cVoteA);

    System.out.println("Winner     " + "          " + cNameA[winner]);

//