import java.util.Scanner;
/**
* 将键盘上输入的一个字符串转换成十进制整数,然后打印出这个十进制整数对应的二进制形式。<br>
* <br>
* 这个程序要考虑输入的字符串不能转换成一个十进制整数的情况,并对转换失败的原因要区分出是数字太大,<br>
* 还是其中包含有非数字字符的情况。<br>
* 提示:十进制数转二进制数的方式是用这个数除以2,余数就是二进制数的最低位,<br>
* 接着再用得到的商作为被除数去除以2,这次得到的余数就是次低位,如此循环,直到被除数为0为止。<br>
* 其实,只要明白了打印出一个十进制数的每一位的方式(不断除以10,得到的余数就分别是个位,十位,百位),<br>
* 就很容易理解十进制数转二进制数的这种方式。
*
* @author 享受JAVA(java2000.net)
*/
public class T3 {
/**
* @param args
*/
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine();
int num = 0;
try {
num = strToInt(str);
} catch (NumberFormatException ex) {
System.out.println(ex.getMessage());
return;
}
System.out.println("num=" + num);
System.out.println("二进制为:" + toBinaryString(num));
}
public static String toBinaryString(int num) {
StringBuilder b = new StringBuilder();
try {
while (num > 0) {
b.insert(0, num % 2);
num >>>= 1;
}
return b.toString();
} finally {
b.delete(0, b.length());
b = null;
}
}
public static int strToInt(String s) {
int result = 0;
boolean negative = false;
int i = 0, max = s.length();
int limit;
int multmin;
int digit;
if (max > 0) {
if (s.charAt(0) == '-') {
negative = true;
limit = Integer.MIN_VALUE;
i++;
} else {
limit = -Integer.MAX_VALUE;
}
multmin = limit / 10;
if (i < max) {
digit = Character.digit(s.charAt(i++), 10);
if (digit < 0) {
throw new NumberFormatException("字符串格式不正确: \"" + s + "\"");
} else {
result = -digit;
}
}
while (i < max) {
// Accumulating negatively avoids surprises near MAX_VALUE
digit = Character.digit(s.charAt(i++), 10);
if (digit < 0) {
throw new NumberFormatException("字符串格式不正确: \"" + s + "\"");
}
if (result < multmin) {
throw new NumberFormatException("数字超过最大允许范围:: \"" + s + "\"");
}
result *= 10;
if (result < limit + digit) {
throw new NumberFormatException("数字超过最大允许范围: \"" + s + "\"");
}
result -= digit;
}
} else {
throw new NumberFormatException("字符串为空: \"" + s + "\"");
}
if (negative) {
if (i > 1) {
return result;
} else { /* Only got "-" */
throw new NumberFormatException("不能只有负号: \"" + s + "\"");
}
} else {
return -result;
}
}
}
注解
StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符添加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符。
分享到:
相关推荐
编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数,代码
因为要将程序在唐都仪器上运行,输入的两个数的和要以十进制形式通过可编程接口芯片8255A在LED数码管上显示,所以,我直接在程序里输入了两个五位十进制数,然后将这两个数转换为二进制后存放在AX中,即先将其转换...
(2)将二进制形式的IP地址与子网掩码做“与”运算,将答案化为十进制便得到网络地址; (3)将二进制形式的子网掩码取“反”; (4)将取“反”后的子网掩码与IP地址做“与”运算,将答案化为十进制便得到主机地址...
显示屏数字可随时转换为下列形式进行计算:十六进制、十进制、八进制、二进制、人民币中文大写形式、人民币数字形式(例如:1435.75、人民币壹仟肆佰叁拾伍圆柒角伍分、¥1435.75)。以上各种转换与计算结果可选择...
显示屏数字可随时转换为下列形式进行计算:十六进制、十进制、八进制、二进制、人民币中文大写形式、人民币数字形式例如:1435.75、人民币壹仟肆佰叁拾伍圆柒角伍分、¥1435.75)。以上各种转换与计算结果可选择是否...
显示屏数字可随时转换为下列形式进行计算:十六进制、十进制、八进制、二进制、人民币中文大写形式、人民币数字形式例如:1435.75、人民币壹仟肆佰叁拾伍圆柒角伍分、¥1435.75)。以上各种转换与计算结果可选择是否...
、八进制、二进制、人民币中文大写形式、人民币数字形式(例如:1435.75、人民币壹仟肆佰 叁拾伍圆柒角伍分、¥1435.75)。以上各种转换与计算结果可选择是否自动存入WINDOWS剪贴 板,并可自动输出在其它程序窗口的...
显示屏数字可随时转换为下列形式进行计算:十六进制、十进制、八进制、二进制、人民币中文大写形式、人民币数字形式(例如:1435.75、人民币壹仟肆佰叁拾伍圆柒角伍分、¥1435.75)。以上各种转换与计算结果可选择...
5.显示屏数字可随时转换为十六进制、十进制、八进制、二进制形式进行计算,以上各种转换与计算结果可选择是否自动存入WINDOWS剪贴板,并可自动输出在其它程序窗口的当前光标位置,省去了按”Ctrl+V”的不便。...
显示屏数字可随时转换为下列形式进行计算:十六进制、十进制、八进制、二进制、人民币中文大写形式、人民币数字形式。以上各种转换与计算结果可选择是否自动存入WINDOWS剪贴板,并可自动输出在其它程序窗口的当前...
显示屏数字可随时转换为下列形式进行计算:十六进制、十进制、八进制、二进制、人民币中文大写形式、人民币数字形式(例如:1435.75、人民币壹仟肆佰叁拾伍圆柒角伍分、¥1435.75)。以上各种转换与计算结果可选择...
、八进制、二进制、人民币中文大写形式、人民币数字形式(例如:1435.75、人民币壹仟肆 佰叁拾伍圆柒角伍分、¥1435.75)。以上各种转换与计算结果可选择是否自动存入WINDOWS剪 贴板,并自动输入在其它程序窗口的...
显示屏数字可随时转换为下列形式进行计算:十六进制、十进制、八进制、二进制、人民币中文大写形式、人民币数字形式(例如:1435.75、人民币壹仟肆佰叁拾伍圆柒角伍分、¥1435.75)。以上各种转换与计算结果可选择...
这导致空间浪费而且无法与外部数据文件进行“二进制”读写。能否关掉填充,或者控制结构域的对齐方式? 2.14 为什么sizeof返回的值大于结构大小的期望值,是不是尾部有填充? 2.15 如何确定域在结构中的字节偏移...
这导致空间浪费而且无法与外部数据文件进行“二进制”读写。能否关掉填充,或者控制结构域的对齐方式? 27 2.14 为什么sizeof返回的值大于结构大小的期望值,是不是尾部有填充? 28 2.15 如何确定域在结构中的...
tftp -i 自己IP(用肉机作跳板时这用肉机IP) get server.exec:server.exe 登陆后,将“IP”的server.exe下载到目标主机c:server.exe 参数:-i指以二进制模式传送,如传送exe文件时用,如不加-i 则以ASCII模式(传送...
o 3.10 我的编译器在结构中留下了空洞, 这导致空间浪费而且无法与外部数据文件进行 "二进制" 读写。能否关掉填充, 或者控制结构域的对齐方式? o 3.11 为什么 sizeof 返回的值大于结构的期望值, 是不是尾部有填充? ...
部数据文件进行”二进制” 读写。能否关掉填充, 或者控制结构域 的对齐方式? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.11 为什么sizeof 返回的值大于结构的期望值, 是不是尾部有填充? . . ...