繁体   English   中英

我通过快速二进制计数器获得了负值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM