我做了一个JavaClass,它使加,减,乘多。等等
和数字类似(155 ^ 199 [+,-,,/] 555 ^ 669 [+,-,,/] ..... [+,-,*,/] x ^ n);
每个数字都存储在Byte-Array中,并且byte-Array可以包含最大值。66.442
例:
(字节)数组= [1] [0] + [9] [0] = [1] [0] [0]
(字节)数组= [9] [0] * [9] [0] = [1] [8] [0] [0]
如果数字大于则我的班级文件不起作用(例如:999 ^ 999)
我如何解决这个问题,使更大的数字之间相加?
当字节数组达到66.443值时,VM给出此错误:
原因:java.lang.ClassNotFoundException。这实际上不是正确的错误描述。
好吧,这意味着,如果我有一个具有66.443值的字节数组,则该类无法正确读取。
已解决: 使用多维字节数组来解决此问题。
array {array,... nth-array} [+,-,/] nth-array {array,... nth-array}
仅需几秒钟即可在大数之间进行加法运算。
谢谢!
Java中的单个方法限制为64KB字节代码。在代码中初始化数组时,它使用字节码执行此操作。这将可以定义的最大大小限制为大约这个大小。
如果您有一个很大的值数组,我建议您将其存储在一个外部文件中,并在运行时加载它。这样,您可以拥有最多2 GB的字节数组。如果您需要的还不止这些,则需要一个数组数组。
每个数组可以容纳最大值Integer.MAX_VALUE。如果它崩溃了,我猜你会看到一个OutOfMemoryError. 通过使用更多堆空间启动 java vm 来解决这个问题:
java -Xmx1024M <...>
Run Code Online (Sandbox Code Playgroud)
(示例给出 1024 MB 堆空间)
java.lang.ClassNotFoundException如果虚拟机需要一个类但无法加载它,则抛出该错误 - 通常是因为它不在类路径上(有时是我们忘记编译 java 源文件的情况..)。这个异常与java数组操作完全无关。
评论区继续讨论:
缺少的类的名称非常重要。ClassBigMath在抛出异常的代码行,VM第一次尝试加载该类,但失败了。ClassBigMath.class类加载器在类路径上找不到文件。
首先仔细检查编译后的 java 文件是否确实存在,并仔细检查源代码中是否有拼写错误。此错误的典型原因:
Class.forName("MyClass")并且类名中有一个拼写错误| 归档时间: |
|
| 查看次数: |
29137 次 |
| 最近记录: |