字符串格式十进制数转二进制的Java实现问题求助
十进制字符串转二进制字符串的问题解决
错误原因
你写的Integer.parseInt(dec, 2)是把二进制格式的字符串解析为十进制整数,而你输入的是十进制的"2",二进制里仅包含0和1两个合法字符,所以触发NumberFormatException。
正确实现代码
要完成"十进制字符串转二进制字符串"的需求,正确步骤是:
- 把输入的十进制字符串转成十进制整数
- 把十进制整数转成二进制字符串
代码如下:
Scanner input = new Scanner(System.in); String dec = input.next(); // 先将十进制字符串转为int类型的十进制数 int decimalNum = Integer.parseInt(dec); // 再将十进制数转为二进制字符串 String binaryStr = Integer.toBinaryString(decimalNum); System.out.println(binaryStr);
测试输入"2"时,输出就是"10",完全符合你的需求。
额外说明
- 如果输入的十进制数超出
int范围,可以用Long.parseLong()和Long.toBinaryString()替代 - 若需要带前缀"0b"的二进制字符串,可改用
Integer.toString(decimalNum, 2),不过toBinaryString()返回的不带前缀的纯二进制字符,更贴合你的示例需求
内容的提问来源于stack exchange,提问作者Dhwani Patel
相关产品推荐
相关产品推荐

