Вы накапливаете свой итог в double
, а затем делаете это:
MeanSampleSize = (int) temp/R.length;
, что составляет
MeanSampleSize = ((int) temp)/R.length;
Как сказал Radiodef, если temp
'значение s больше Integer.MAX_VALUE
, (int)temp
будет Integer.MAX_VALUE
(2147483647), что при делении на 1000 (с целочисленным делением) равно ... 2147483.
Вы, вероятно, хотели бы разделить первым (как двойное число), а затем усечь до int:
MeanSampleSize = (int) (temp / R.length);
Стоит отметить различные комментарии, однако, выполнение этого с double
, вероятно, не является вашей лучшей ставкой, если только getTotal
не вернетdouble
и вы хотите, чтобы эти дробные значения накапливались.Но, возможно, стоит использовать long
(и скорректировать свои парены, как указано выше).