A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 侯丛政 中级黑马   /  2013-1-26 12:21  /  1396 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String s = "22";
System.out.println(Integer.parseInt(s, 2));

结果抛了NumberFormatException, 怎么回事呢?

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

3 个回复

倒序浏览
该方法要求字符串中的每一个数字都必须小于指定的基数值,像二进制每一位都小于2,八进制每一位都小于8,十进制没有10
你指定了基数是2,却又给他一个二进制没有的数,他当然没法给你转了。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
String s = "22";
System.out.println(Integer.parseInt(s, 2));
第二个参数是指定的基数,就是被转换的参数是几进制

parseInt("1100110", 2)
你写的是2,所以第一个参数必须是2进制的,只能是1和0的

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
Integer.parseInt(String s, int radix)  使用第二个参数指定的基数,将字符串参数解析为有符号的整数。
简单的说就是你的字符串数字是几进制的数,你如果写2的话,表示是2进制的数。那么只有0和1,而前面字符串是22自然会报异常

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马