[英]I am getting negative values with a quick binary counter I made
在Java中,我试图创建一个二进制计数器,以后我可以在任何base-n系统中使用它进行计数。 但是我的结果有一个神秘的结局。 某一时刻,值从1111111111跳到-1111111111。 这似乎很不正常,但是我不知道在Java中如何使用不同的数字限制这一事实可能对这种情况没有帮助。 同时,我查看了我的代码,因此该值不可能变为负数。 我的二进制计数器代码如下:
package bin;
public class Counter {
public static Integer currentNumber = 0;
public static Integer upTo = 1000;
public static Integer currentCount = 0;
public static void main(String[] args) {
while(upTo>=currentCount) {
if(currentNumber.toString().endsWith("0")) {
currentNumber++;
}else if(currentNumber.toString().endsWith("1")){
currentNumber+=10;
}
if(currentNumber.toString().contains("2")|currentNumber.toString().contains("3")|currentNumber.toString().contains("4")|currentNumber.toString().contains("5")|currentNumber.toString().contains("6")|currentNumber.toString().contains("7")|currentNumber.toString().contains("8")|currentNumber.toString().contains("9")) {
}else {
currentCount++;
System.out.print(currentNumber + "\n");
}
}
System.out.print("done");
}
}
`
该程序的结果可以在https://pastebin.com/UUMRhkhv上找到。我希望得到任何可以解释可能发生的情况的答案,以便我可以创建一个更高效,更准确的二进制计数器。
您遇到整数溢出。 Java中的int
是32位,因此最大值是2,147,483,647。 您尝试存储的数字超出了该数字。 您可能要使用long
或者只是将表示形式保留为字符串。
(顺便说一句,您的二进制计数器实际上并没有正确计数,但是大概您已经知道了。而且,您真的想要||
,它是逻辑或运算符,而不是|
是按位或运算符。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.