簡體   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