2017-06-22 64 views
0

我想寫一個基本的計算器。我想讓我的計算器擁有的一件事是基礎算術轉換器,它在輸入基數爲10的整數時提供輸出。Java整數到二進制轉換器代碼

我試圖爲自己編寫代碼,花了近3個小時才弄清楚如何將一個數字轉換爲給定的基礎,目前它的工作效果還不錯,但我遇到了一個問題 - 當我嘗試將一個整數轉換爲基數2(二進制)我的計算器不適用於大於1025的數字。

我認爲這個問題是因爲存在一個整數可以容納的最大值或所以我嘗試了「BigInteger」,但因爲它不支持剩餘「%」操作我無法使其工作。

else if(c.equals("Base")) { 
    g = 0; 
    l = 0; 
    System.out.println("Enter the number (Integer) you want to convert"); 
    f = scan.nextInt(); 
    System.out.println("Enter the arithmetic base you want for your new number"); 
    m = scan.nextInt(); 
    for (;f>=1;) { 
     h=f%m; 
     f=f/m; 
     k = (int)Math.pow(10,g); 
     g++; 
     l =l + (h*k); 
    } 
    System.out.println(l); 
} 

很抱歉,如果代碼是真的不好,有比較有效的方法,我只是希望它是我,而不是尋找它。

+0

這不是一個將「二進​​製表示法」存儲在「int」變量中是個好主意,因爲它將您限制爲10位數字。你可以使用一個字符串。 – Eran

+0

我應該改變他們全部還是足夠,如果我只是改變「int l」爲「字符串l」? – Biazs

+0

如果您要求人們嘗試閱讀,也許您想正確[縮進您的代碼](https://stackoverflow.com/posts/44693520/edit)。 – khelwood

回答

0

將「二進制表示法」存儲在int變量中不是一個好主意,因爲它將您限制爲10位數字。

相反,你可以使用一個String變量來保存結果:

String l = ""; 
while (f > 0) { 
    h = f % m; 
    f = f/m; 
    l = h + l; 
} 
System.out.println(l); 
+0

謝謝你這個作品! – Biazs

0

這是我試過自己的方式(模/分/加):

int decimalOrBinary = 345; 
    StringBuilder builder = new StringBuilder(); 

    do { 
     builder.append(decimalOrBinary % 2); 
     decimalOrBinary = decimalOrBinary/2; 
    } while (decimalOrBinary > 0); 

    System.out.println(builder.reverse().toString()); //prints 101011001