基本上,我有一项任务要求我找到一组给定数字的模式。
这是我的方法:
public void findMode (){ /* The vector data is analyzed and transferred into a smaller vector smallList (0..100). For each occurrence of n in vector data, smallList[n] is incremented +1. function Largest is then called to find the largest quantity in vector smallList. The mode(s) is/are printed out. */ int loop, largest; int[] smallList = new int[101]; for (int i = 0; i < myHowMany; i++) { smallList[myData[i]]++; } int max = 0; for (int i = 0; i < smallList.length; i++) { if (max < smallList[i]) { max = smallList[i]; } } //Max is 26 int size = 0; for (int i = 0; i < smallList.length; i++) { if (i == max) size++; } int[] modes = new int[size]; int modeIndex = 0; for (int i = 0; i < smallList.length; i++) { if (smallList[i] == max) { modes[modeIndex] = smallList[i]; System.out.println(modes[modeIndex]); modeIndex++; } } Everything compiles fine, but when I run this method, I get an out of bounds array method. I have no idea WHY this happens so I
需要知道社区是否可以帮助我
。 解决!
请告诉我是否需要更多信息!
编辑:我忘了提到我在这里收到错误:
modes[modeIndex] = smallList[i];
新问题: 我修复了之前的问题,但是现在,我发现我的最大数据进入数组,因此模式= 26(最大)
答案 0 :(得分:2)
您的错误就在这一行
if (i == max) size++;
应该是
if (smallList[i] == max) size++;
这导致modes
的大小错误
答案 1 :(得分:1)
这应该足够清楚:modeIndex或i超出了数组大小。由于你使用smallList.length循环遍历smallList,我猜错误是在modeIndex中。在这种情况下,size(用于构造模式)不够大。
答案 2 :(得分:0)
if(i == max)size ++; 然后 if(smallList [i] == max)
请检查您的尺码值。