解决方案一:
public static void main(String[] args) {
int[] num ={100001,100002,.......,...};
}
假设数组num
包含 100000 个数字,并且您的main
函数给出错误。在这种情况下,您可以将上述数组分成两部分。现在,您可以声明 2 个不同的数组,而不仅仅是一个数组。例如:
static int[] num1 ={}
和static int[] num2={}
在 main 函数外部声明num1
,在 main 函数内部声明 num2num2
将在 main 函数内部替换num
。
数组的所有元素num
将被分成两个子数组num1
和num2
;以这样一种方式拆分,即静态和非静态数组都可以容纳 8000 和 2000 个元素。
main 方法中的代码可以处理所有 10000 个元素,这只是一个假设:
if (n <= 8000) {
System.out.println(" ---> " + num2[((int) n - 1)]);
} else if (n > 8000 && n <= 10000) {
n = n - 8000;
System.out.println(" ---> " + num1[((int) n - 1)]);
}
因此,拆分该数组或将元素分成 8000 和 2000 两部分,可以消除错误。
解决方案2:
将数组放在main
方法之外num1
,num2
现在都是静态数组,但 65535 字节的限制也适用于静态初始化数组。拆分您的元素,例如,您可以将 10000 拆分为 8000 和 2000,或者根据您的要求在 main 方法之外的两个静态数组中拆分。
如果存储大小超过 65535 的限制,则此错误与元素的存储long[]
或int[]
发生错误的位置有关。在这种情况下,请拆分元素,例如,如果您正在使用long[]
或int[]
以合适的数量拆分它们,直到出现错误解决。
换句话说,不强制只将数组分成 2 部分,您也可以将它们分成 4 种不同的大小或不同的相等部分。但同样,您的问题的解决方案可能会根据您的要求而有所不同。