2014-06-17 184 views
-2

我有一個問題,我想將我的輸入字符串變成BigInteger,並且輸出應該是二進制字符串。我使用了這個代碼,但它只能讀取「0」和「1」。Java:字符串到BigInteger到二進制

Scanner scan = new Scanner(System.in); 
String input = scan.nextLine(); 
BigInteger big = new BigInteger(input, 2); 
String binarystring = big.toString(2); 
System.out.println(binarystring); 

當我將其更改爲:BigInteger big = new BigInteger(input, 16); 我可以以十六進制數,但沒有空間寫。

我想要的是我可以寫任何字符串,程序應該給我它的二進制值的字符串。

+0

如何確定輸入字符串在哪個基礎?你是否限制它說二進制,八進制,十進制或十六進制?用戶會在數字之前添加字符(例如0xDEADBEEF)以指示基數? – user1071777

+0

@ user1071777不,輸入應該是正常字符(字母和數字),但輸出應該是二進制。沒有用戶不需要任何東西來表示基地 – fihdi

+0

我在說什麼,你怎麼知道輸入字符串「345」是在基地8還是基地10或基地16或任何高於基地6?在不知道基數的情況下,可能有任何數量的二進制表示。防爆。 345在基地8到二進制是11100101,345基地10是101011001等 – user1071777

回答

0

像「hey world」這樣的字符串在基數10中沒有任何有意義的數字表示,所以我建議輸出一個適當的消息。

Scanner scan = new Scanner(System.in); 
String input = scan.nextLine(); 
try { 
    BigInteger big = new BigInteger(input); // default constructor is base 10 
    System.out.println(big.toString(2)); 
} 
catch (NumberFormatException){ 
    System.out.println("Input was not a decimal number"); 
} 
+0

好的,謝謝,這對我有點幫助,如果你可以給我一個代碼,我可以將我的輸入轉換成十進制數,並將其用於BigInteger大,那會很好。無論哪種方式謝謝;) – fihdi

+0

BigInteger的默認構造函數嘗試將輸入解析爲十進制(基數爲10)的表示形式。 – user1071777

+0

好吧,但是當我輸入類似「測試」它說:NumberFormatException:對於輸入字符串:「測試」,這就是我想要做的,將輸入轉換爲十進制值FIRST,然後將其提供給BigInteger。 – fihdi