我正在尝试让我的程序从一个整数数组中打印出最大的值。 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语言
答案 0 :(得分:0)
winner
)的最大位置的变量初始化为第一个数组元素。cVoteA(iv)
与目前为止的最大cVoteA进行比较,cVoteA(winner)
。iv
)保存到winner
。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]);
//