[英]Trouble converting decimal value to binary
我正在制作一個將十進制值轉換為二進制值的程序,反之亦然。 我已經想出了如何將二進制轉換為十進制,但是我在將十進制轉換為二進制時遇到了問題。 我看過很多源代碼,其中包含有關如何執行此操作的代碼,但其中大多數都涉及使用數組。 我不能使用數組,因為這個程序有一個 GUI,而 JLabel 不能打印數組。 我找到了一種代碼,適用於某些數字,但不適用於其他數字。 這是代碼:
public void convertBinary (int decimal)
{
String binary = "";
int remainder;
while (decimal != 0)
{
remainder = decimal % 2;
decimal /= 2;
binary += remainder;
}
lblDecBinAns.setText(String.valueOf(binary));
}
給定的數字由用戶輸入(“十進制”),當他們按下按鈕時將被獲取。 我不知道是否可以對此代碼進行調整以使其正常工作。 也許有一種完全不同的算法適用於此,或者可能有一種使用 JLabel 打印數組的方法。 我已經為此困惑了一段時間,所以感謝您的幫助。 謝謝。
PS我知道 .toBinary function,但我必須為此創建自己的方法。
你完成了,你唯一缺少的是反轉binary
字符串
int decimal=10;
String binary = "";
int remainder;
while (decimal != 0)
{
remainder = decimal % 2;
decimal /= 2;
binary += remainder;
}
System.out.println(new StringBuilder(binary).reverse().toString());
產量
結果1010
您需要將remainder
添加為binary = remainder + binary
或反轉字符串。 並且不需要使用String.valueOf
因為它已經是一個字符串。 還要考慮decimal
為零的情況,您需要發送0
public String convertBinary(int decimal) {
String binary = "";
int remainder;
if(decimal == 0) {
return "0";
}
while (decimal != 0) {
remainder = decimal % 2;
decimal /= 2;
binary = remainder + binary;
}
return binary;
}
對於不同的扭曲,你也可以這樣做。
&
運算符,屏蔽掉低位。 您也可以在這里使用余數%
運算符。decimal
)右移一位,以便檢查下一位。while(!(decimal>>>1) == 0)
decimal == 0
(即所有1
位都已移出數字)。public static String toBinary(int decimal) {
// intialize the string
String binary = Integer.toString(decimal&1);
while ((decimal>>>=1) != 0) {
binary = Integer.toString(decimal&1)+ binary;
// or binary = Integer.toString(decimal % 2) + binary;
}
return binary;
}
你試過這個嗎?
String test = Integer.toString(n, 2); //n is the number to convert and 2 the base (binary). In case you want an octal number, for example, just change the base to 8.
但是如果你想像這樣將該String
重新轉換為數字,使用它會導致問題:
int number = Integer.parseInt(test); //This will cause NumberFormatException.
為避免錯誤,必須將test
的每個字符轉換為一個char
char digit = test.charAt(i);
最后,再次將每個字符轉換為單獨的String
String converted = String.valueof(digit);
現在您可以將新的String
轉換為int
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.