如何在java中分离二进制打印输出?

时间:2016-02-10 05:32:32

标签: stack

我设法使用堆栈来打印十进制到二进制,但我不知道如何将它返回的每个4分开二进制,这意味着这一点。如果我想要123 = 1111011的二进制文件将打印出来,我希望它打印出1111 011,依此类推每4位数。如果可以,请告诉我,如果您可以尝试学习,请尝试示例!

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(" ");
        }

    }
}
}

2 个答案:

答案 0 :(得分:0)

所以,如果你想知道,我想出来了。我在它上面使用了一个tostring,就像这个String val = todec.pop()。toString();这解决了我的问题!

答案 1 :(得分:0)

在最后一次循环中使用计数器(从4到0计数,反之亦然)。

Psudo代码

counter = 0
while todec is not empty
    print todec entry

    counter = counter + 1
    if counter >= 4 then
         counter = 0
         print " "
    endif
end while

您最好使用shift operator代替&#34; div&#34;或&#34; mod&#34;运营商