如何在数组中找到并打印最大值的索引?

对于我的项目,我需要制作一个以10个数字作为输入的程序,并显示这些数字的模式。 该程序应使用两个数组和一个方法,该方法将数组作为参数并返回数组中的最大值。

基本上,我到目前为止所使用的是使用第二个数组来跟踪数字出现的次数。 查看初始数组,您将看到模式为4.(最多出现的数字)。 在第二个数组中,索引4的值为2,因此2将是第二个数组中的最大值。 我需要在第二个数组中找到这个最大值,并打印索引。 我的输出应为’4’。

我的程序很好,直到我试图生成’4’,我尝试了一些不同的东西,但似乎无法让它正常工作。

感谢您的时间!

public class arrayProject { public static void main(String[] args) { int[] arraytwo = {0, 1, 2, 3, 4, 4, 6, 7, 8, 9}; projecttwo(arraytwo); } public static void projecttwo(int[]array){ /*Program that takes 10 numbers as input and displays the mode of these numbers. Program should use parallel arrays and a method that takes array of numbers as parameter and returns max value in array*/ int modetracker[] = new int[10]; int max = 0; int number = 0; for (int i = 0; i < array.length; i++){ modetracker[array[i]] += 1; //Add one to each index of modetracker where the element of array[i] appears. } int index = 0; for (int i = 1; i  modetracker[i-1]) == true){ index = i; } } System.out.println(+index); } } 

你的错误在于比较if ((newnumber > modetracker[i-1]) 。你应该检查newnumber是否大于已经找到的最大值。即if ((newnumber > modetracker[maxIndex])

您应该将最后一行更改为:

  int maxIndex = 0; for (int i = 1; i < modetracker.length; i++) { int newnumber = modetracker[i]; if ((newnumber > modetracker[maxIndex])) { maxIndex = i; } } System.out.println(maxIndex); 

您可以将最后一部分更改为:

 int maxIndex = 0; for (int i = 0; i < modetracker.length; i++) { if (modetracker[i] > max) { max = modetracker[i]; maxIndex = i; } } System.out.println(maxIndex);