我幾乎完成了一個代碼,該代碼允許用戶將二進制數字輸入二進制,然後將二進制數字反轉並轉換回十進制。在Java中將二進制轉換爲十進制
我解決了一切,除了二進制到小數部分。無論我輸入什麼,它都會一遍又一遍地給我一樣的數字。我不明白爲什麼。基本上,爲什麼我的代碼的最後一部分是錯誤的?我根據你do-while循環狀態時遇到問題,尋找陣列/串的長度,然後將其交由2^N等乘...
我幾乎完成了一個代碼,該代碼允許用戶將二進制數字輸入二進制,然後將二進制數字反轉並轉換回十進制。在Java中將二進制轉換爲十進制
我解決了一切,除了二進制到小數部分。無論我輸入什麼,它都會一遍又一遍地給我一樣的數字。我不明白爲什麼。基本上,爲什麼我的代碼的最後一部分是錯誤的?我根據你do-while循環狀態時遇到問題,尋找陣列/串的長度,然後將其交由2^N等乘...
此代碼有兩個問題。
1)您沒有存儲小數到二進制轉換的結果。你應該引入新的String變量來存儲具有相反二進制值的字符串。
2)您的二進制到十進制算法不正確。 s.charAt(i)返回char值,但您需要雙倍值才能在計算中使用它。 Math.pow(2,(s.length() - i - 1))也是不正確的 - 據我所知它是用於非反轉二進制值。
的代碼固定的版本應該是這樣的:
public static void main(String[] args) {
int a[] = {0, 1};
int number;
int remainder;
String binary = "";
Scanner in = new Scanner(System.in);
System.out.print("Enter Decimal Number: ");
number = Integer.parseInt(in.next());
System.out.print("Binary Number in Reverse: ");
do {
remainder=number%2;
if(remainder > 0){
binary += a[1];
//System.out.print(a[1]);
}
else{
binary += a[0];
//System.out.print(a[0]);
}
number=number/2;
} while(number>0);
System.out.print(binary);
System.out.print(" \nDecimal number: ");
//String s = Integer.toString(number);
double result = 0;
for (int i = 0; i < binary.length(); i++)
result = result + Double.parseDouble(binary.substring(i, i + 1)) * Math.pow(2, i);
System.out.print(result);
}
number
永遠是零或更低:
這會導致變量s
(請選擇更好的變量名稱...)始終爲「0」。
我想你可以找出其餘的。
你能給我一個更大的暗示?我仍然困惑?即使我刪除了do-while,它仍然是相同的錯誤 – Euridice01 2013-02-09 19:26:56
@ Euridice01你說:'無論我輸入什麼,它都會一次又一次地給我一樣的數字.'你的變量's'將始終等於「 0" 。這就是爲什麼你每次都得到相同的價值。請自己進行一些基本的調試,看看您是否可以使程序按預期工作。 – 2013-02-09 20:11:31
對不起。我已經過了2個多小時,我仍然感到困惑。 do-while中的數字總是大於0?那有什麼問題? S爲什麼是零? – Euridice01 2013-02-09 20:32:43
謝謝。其實,我想要反向二進制小數輸出,但我可以自己做。非常感謝!! – Euridice01 2013-02-09 22:28:37