我设法使用堆栈来打印十进制到二进制,但我不知道如何将它返回的每个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(" ");
}
}
}
}
答案 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;运营商