2012-04-13 73 views
0

我正在嘗試創建一個將Decimal轉換爲Binary的方法。這是我寫了那麼遠(這是不正常):十進制到二進制轉換的函數不正確?

public static String D2B(int decimal){ 
    String binaryValue=""; 
    for (int tempDecimal=decimal;0==tempDecimal;tempDecimal/=2){ 
     binaryValue=tempDecimal%2+binaryValue; 
    } 
    return binaryValue; 
} 


public static void main(String[]args){ 
    int myValue=127; 
    System.out.println(D2B(myValue)); 
} 
+0

這裏沒有小數點你真正在做的是轉換成可打印的ASCII碼。 – EJP 2017-04-06 23:44:56

回答

2

我想在你的循環中的條件是不正確的:

for(int tempDecimal=decimal;0==tempDecimal;tempDecimal/=2) 

注意,這個循環而tempDecimal等於0,這意味着循環根本不應該循環爲非零輸入,並且將永遠循環以輸入零。嘗試重寫它爲

for(int tempDecimal = decimal; 0 != tempDecimal; tempDecimal /= 2) 

此外,請注意0作爲輸入和負數作爲輸入;他們不會用你目前的方法正確地出來。

其他一些次要尼特:

  • 我強烈建議正確縮進你的代碼,並把空格之間的運營商以提高可讀性。它使代碼更容易閱讀,而且我認爲如果您有更多空間,您會更容易發現錯誤。
  • 在這個函數中沒有理由創建第二個變量tempDecimal。 Java參數是按值傳遞的,所以您對參數所做的更改將不會顯示在調用方中。由於您沒有在其他地方使用decimal值,因此額外變量是多餘的。

希望這有助於!

+0

ohh ..我的錯誤...感謝您的幫助... – 2012-04-13 18:25:32

+0

感謝您的建議...我是編程新手...我對編程規則不太瞭解。現在我明白了...下一個它永遠不會發生......再次感謝...... – 2012-04-13 18:38:05