- Java code
/**不报错的写法*/public static void getSummeVonXijMalDifferenzMalwg() throws FileNotFoundException, IOException{ getProdukt(); double[] sum = new double[windowSize]; int j = 0; while(j < windowSize){ for(int i = 0; i < myArray.length; i++){ sum[j] = sum[j] + myArray[i][j]; // sum of myArray's rows //这里就不报错。 } j++; } }
但是我需要下面这种定义为static全局变量的写法,以便于提高速度。如何修改才能不报错并且还是全局变量???
- Java code
/**这个报错程序要如何修改才能成功运行?为了提高速度,我需要这种static全局的写法*/public static double[] sum = new double[windowSize]; .....public static void getSummeVonXijMalDifferenzMalwg() throws FileNotFoundException, IOException{ getProdukt(); int j = 0; while(j < windowSize){ for(int i = 0; i < myArray.length; i++){ sum[j] = sum[j] + myArray[i][j]; // sum of myArray's rows //上面这行报错 } j++; } }
------解决方案--------------------
当然,非常大可能的问题就是 windowSize 最开始根本就是0,那你的数组大小就是0,肯定什么数据都装不下。
变通的做法可以考虑:
if (windowSize > sum.length) sum = new double[windowSize];
但我认为,即便你用了这种招数,其实速度也不能提升多少。分配数组内存这个动作非常快,基本上也就1ms以内的事情,除非你这个函数被调用的非常频繁,否则没啥性能提升。