不知道写的对不对,有不对的地方可以向我指出来。
import java.util.Stack;
/**
* 编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数,然后打印出这个十进制整数对应的二进制形式。
* 这个程序要考虑输入的字符串不能转换成一个十进制整数的情况,并对转换失败的原因要区分出是数字太大,还是其中包含有非数字字符的情况。
* 提示:十进制数转二进制数的方式是用这个数除以2
* ,余数就是二进制数的最低位,接着再用得到的商作为被除数去除以2,这次得到的余数就是次低位,如此循环,直到被除数为0为止
* 。其实,只要明白了打印出一个十进制数的每一位的方式(不断除以10,得到的余数就分别是个位,十位,百位),就很容易理解十进制数转二进制数的这种方式。
* @author manager
*
*/
public class Demo {
public static void main(String[] args) {
String param = "9876543210";
Integer num = null;
Stack<Integer> stack = new Stack<Integer>();
try {
num = Integer.valueOf(param);
while (num > 0) {
int b = num % 2;
stack.add(b);
num >>>= 1;// 无符号右移1位,相当于num = num / 2;只不过效率更高
}
toBinaryString(stack);
// 也可以转为Integer之后,直接用Integer.toBinaryString(num)转为2进制,不过这不是题目的本意。
} catch (Exception e) {
boolean check = false;
for (int i = 0; i < param.length(); i++) {
char c = param.charAt(i);
if (c < 48 || c > 57) {
check = true;
break;
}
}
if (check) {
System.out.println("存在非数字字符。");
} else {
System.out.println("数字太大。");
}
}
}
public static void toBinaryString(Stack<Integer> stack) {
StringBuilder sb = new StringBuilder();
while (!stack.empty()) {
sb.append(stack.pop());
}
System.out.println(sb.toString());
}
}
分享到:
相关推荐
C_中的进制转换问题,初学者可以看看,绝对好使。
唯美计算器,可用于解决windows自带计算器不能进行小数的多进制之间转换问题,适用于大学计算机基础课程中数制转换中小数的二、八、十、十六进制转换。
辅助软件 进制转换V2.1辅助软件 进制转换V2.1辅助软件 进制转换V2.1辅助软件 进制转换V2.1辅助软件 进制转换V2.1辅助软件 进制转换V2.1辅助软件 进制转换V2.1辅助软件 进制转换V2.1辅助软件 进制转换V2.1辅助软件 ...
该资源主要解决进制转换问题 十进制转换十二进制
进制转换其实很简单,只要掌握一定的方法,可以让你轻松解决。
进制转换练习题
十六进制转换十六进制转换十六进制转换十六进制转换
C语言,实现进制转换,十进制转换为十六进制 例如输入10,转换结果为a
超强进制转换工具 二进制 八进制 十进制 十六进制转换
进制转换:10;2,8,16 及 2;16的相互转换, 支持小数(适合计算机等级考试基础题)其中10进制支持负数 .字符转换:字符转换为10进制(ASCII码)并且可偏移ASCII码,及16进制及其逆操作。 转换为10进制的双字节字符...
进制转换器。提供2进制 8进制 16进制之间的转换
2~62进制转换器 支持整数 小数转换 非常好用的小工具
西门子TIA博途进制转换功能pdf,西门子TIA博途进制转换功能
进制转换C源码 根据毕向东Java基础教程中讲解的进制转换原理写出来的C语言代码,C语言还是和Java差别太大,没有无符号右移>>>太难搞了,不过还算搞定了吧
在C#中可以对整型运算对象按位进行逻辑运算,同时也可以实现C# 16进制转换10进制,C#10进制转换2进制等功能。
16进制与有符号10进制间的相互转换,支持16进制数转换为有符号10进制数,或将有符号10进制转换为16进制数,可选包含1、2、4、8字节。
适用于在通讯时可以用到的实例,16进制转换为二进制,已经测试OK.
ASCII及进制转换进制转换编程或编辑代码专用
基于单片机(AT89C51)的进制转换及进制计算器.rar