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