我有一个2.5GB文件,我正试图用Java中的Antlr解析该文件。首先,我有一个内存不足的异常,所以我增加了最大堆大小。然后,它在此堆栈跟踪中失败:
Exception in thread "AWT-EventQueue-0" java.lang.NegativeArraySizeException
at java.util.Arrays.copyOf(Arrays.java:2882)
at org.antlr.v4.runtime.ANTLRInputStream.load(ANTLRInputStream.java:123)
at org.ant
是否有方法使用Eclipse查找Java代码中潜在的数字溢出?例如..。
long aLong = X * Y * Z;
..。其中X、Y和Z是ints,结果可能溢出Integer.MAX_VALUE。(注意,可能与直觉相反,如果本例中的结果溢出Integer.MAX_VALUE,则aLong将被分配给错误的溢出值)。
我查看了Eclipse的警告设置、PMD规则和FindBugs规则,我找不到任何设置来帮助这一点。一位同事指出IntelliJ会对此提出警告.我不想承认我不能对Eclipse做同样的事情。;-)
澄清1:我不是在找0种假阳性的东西.只是警告说“这里可能有溢出问题”。
澄清2:
我想在VBA中实现一个无限循环(我以前在Java和C++中做过这样的事情)。我不断得到“溢出”的VBCritical红色圆圈X。
这是我的代码。Error <>0应该识别溢出并忽略它,让宏继续无限循环,但我仍然得到overflow VBCritical MsgBox。
我想把A列中的数字打印出来。这部分现在可以用了:它打印"2“。
下面是我的代码:
Sub InfiniteLoop()
Dim counter As Integer
counter = 1
Do While counter > 0
counter = counter + 1
Loop
If E
我刚刚在齐柏林飞艇中完成了令牌级别,最后他们解释了溢出在坚固性中是非常常见的。我甚至没有想过溢出的问题,我只是想偷那些代币。
这是他们展示的代码:
溢出在坚固性中非常常见,必须使用控制语句进行检查,例如:
if(a + c > a) {
a = a + c;
}
一个更简单的选择是使用OpenZeppelin的SafeMath库来自动检查所有数学操作符中的溢出。生成的代码如下所示:
a = a.add(c);
如果存在溢出,代码将恢复。
我只是不明白什么是坚实的溢出,谁能给我一个新手的解释,他们是什么,或指出我的文章,看看。谢谢!
我目前正在将一个算法从Java转换到Ruby,我遇到了一个小问题,Ruby中缺少整数溢出。
假设我有一个值2663860877,这个值大于最大整数2147483648。
在Java中,它是环绕的,我应该得到-1631106419。
我找到了这段代码,但它似乎不起作用:
def force_overflow(i)
if i < -2147483648
-(-(i) & 0xffffffff)
elsif i > 2147483647
i & 0xffffffff
else
i
end
end
而且,变量并不像你所期望的那样强制它
考虑以下几点:
(i+j)/2
I和j都是32位整数,结果也应该是。但是在这个小方程中,有一个隐藏的溢出,i+j可能比32位整数更大,即使结果总是32位整数。
public class Sum{
public static void main(String []args){
int i = 2147483647;
int j = 2147483647;
System.out.println((i + j)/2);
}
}
结果给了我-1。
如何防范可能会溢出但并不总是显而易见的情况
我正在编写一个Android应用程序,它有一个成就系统,类似于Stack溢出的徽章。我还使用Sugar将成果的进度存储在数据库中。以下是成就班:
public class Achievement extends SugarRecord<Achievement>{
@StringRes
public int shortNameId;
@StringRes
public int descriptionId;
public int progressNow;
public int fullProgress;
//I am afrai
我有下面的程序,平方之和1^2 + 2^2 +…+ N^2计算为:示例输出:
java SumSquares 2=5
java SumSquares 3= 14
java SumSquares 1000000 = 333333833333500000
到目前为止,我的情况如下:
int N = Integer.parseInt(args[0]);
int sum = 0;
long R;
for (int i = 1; i <= N; i++) {
R = i * i;
我正在尝试一个表达式验证方法,以确保传递给函数的帐号是否有效。如果是,则返回true,如果为false,则返回false。
但我遇到了一个错误:
Cannot Resolve method(java.lang.string)
我已经看过了几个堆叠溢出问题,但我似乎不知道自己在代码中做错了什么。
accountNumber = integer data type
this.AccountNumber = integer data type
代码:
String pattern2 = "^\d{1,10}$" ;
if (!accountNumber.matches(pat
您将如何在Swift中实现与Java的无符号右移位操作符的等效?
根据的说法,没有符号的右移位操作符">>>“将零移到最左边的位置,而">>”之后的最左边位置则取决于符号扩展。
例如,
long s1 = (-7L >>> 16); // result is 281474976710655L
long s2 = (-7L >> 16); // result is -1
为了在Swift中实现这一点,除了符号位之外,我会执行如下操作,
let lsb = Int64.max + negativeN
对于一个小项目(问题10 project Euler),我尝试将200万以下的所有质数求和。所以我使用了暴力方法,从0迭代到2'000'000,并检查这个数字是否是质数。如果是,我将其添加到总和中:
private int sum = 0;
private void calculate() {
for (int i = 0; i < 2000000; i++) {
if (i.isPrime()) {
sum = sum + i;
}
}
sysout(sum)
}
此计算的结果是1179908154,但这是不
在C和C++中,INT_MIN % -1的行为似乎与没有定义/依赖于平台。
在Java中,%操作符是否溢出?
考虑一下这段代码:
public class Test {
public static void main(String[] args) {
// setup variables:
byte b = Byte.MIN_VALUE % (-1);
short s = Short.MIN_VALUE % (-1);
int i = Integer.MIN_VALUE % (-1);
long l = L
我正在写一些代码,这些代码将在2038年1月19日之后停止工作,因为当java Date溢出时会出现Year_2038_problem,所以我想我可以创建一个在2036年开始失败的junit测试,给我2年的时间来修复它。 为了首先创建一个失败的测试,我增加了25年,令人惊讶的是测试没有失败。 @Test
public void warn2038Overflow() {
Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR, 25);
// today is 2019 plus 25 years become