我設法使用堆棧來打印十進制到二進制,但我不知道如何分離二進制每4返回,這意味着這一點。如果我想要123 = 1111011的二進制數就是打印出來的東西,我希望它打印出1111 011等等每4位數字。讓我知道它是否可以完成,請嘗試示範它,如果你可以嘗試學習!如何在java中分離二進制打印輸出?
import java.util.*;
public class SchoolHomework {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
System.out.println("Program that converts decimal to binary!");
int dec;
System.out.println("Please type in a decimal number:");
Scanner input = new Scanner(System.in);
Stack<Integer> todec = new Stack<Integer>();
dec = input.nextInt();
if (dec < 0){
System.out.println("Error: Please enter a positive number!");
System.exit(0);
}
while (dec != 0){
int stackv = dec % 2;
todec.push(stackv);
dec /= 2;
}
System.out.println(dec + " To binary is: ");
int counter = 0;
while (!(todec.isEmpty())) {
String val = todec.pop().toString();
System.out.print(val);
counter = counter + 1;
if (counter >= 4){
counter = 0;
System.out.print(" ");
}
}
}
}
你能解釋一下你的,而不是 「格」 或 「MOD」 – JimBob101
是什麼意思另外,當我實施這種變化時,我沒有得到正確的二元回報。你知道爲什麼嗎?我用新的代碼編輯了初始文章! – JimBob101
對於這兩個問題:因爲你正在使用'div'運算符,所以'123/2 = 61.5'投射到Integer會丟掉一些比特。更改使用移位操作符將解決您的問題。 – sdao