我想创建一个大小的布尔数组,用户将其作为输入.例如 - 用户可能会输入一个大数字,如1000000000000; 所以我必须创建一个大小为1000000000000的布尔数组.我面临的问题是,我不能将输入存储为int,因为它无法容纳如此大的数字 - 因此我无法创建数组.Double是一个选项.我可以将输入数字存储为double,但我不知道如何创建双数字大小的数组.这就是这个想法 -
Scanner scanner = new Scanner(System.in);
int target = scanner.nextInt();
boolean [] array_a=new boolean [(target)];
Run Code Online (Sandbox Code Playgroud)
如果目标超过int范围,它将无法工作.任何帮助表示赞赏.
更新:谢谢大家.所以你只能创建一个int的最大范围(2147483648)大小的数组,对吧?内存方面没有提到我.要采取不同的方法.
T.J*_*der 11
您无法在Java中创建大小大于最大正数的数组int,因为数组索引是int.(对于各种List实现也是如此.你可以创建一个包含更多条目[ LinkedList例如]的东西,但是类似的东西get并且size开始工作不正常,你只能通过iterator[假设事情没有] 得到以后的条目这只是简单的休息时间,这需要一段时间.)
您似乎不太可能真的需要创建一个boolean超过2,147,483,647个条目的空间数组,但如果您真的这样做,则必须创建多个数组并通过获取索引的模数来选择正确的数组(这将需要成为a long).(或者使用一些非JDK库,如果存在这样做.)这将需要像4G的RAM.可行,但可能性非常高,不同的方法完全会更好.
但1,000,000,000,000个元素?这将需要大约1-2 TB的RAM.正如NPE所说,如果你不是在超级计算机上运行,你就不会有这种情况.
必须创建一个大小为1000000000000的布尔数组.我面临的问题是,我不能将输入存储为int
你的问题不是那个.您的主要问题是您将没有足够的内存来分配具有1,000,000,000,000个元素的数据结构(即使您克服了int索引的限制).
您需要重新考虑算法.
| 归档时间: |
|
| 查看次数: |
7761 次 |
| 最近记录: |