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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© duanyoujiji 中级黑马   /  2013-12-29 21:36  /  1368 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我想把字符串类型的 Str 中的第i个元素转为int类型的,
我只想到两个办法,还都行不通:
int num= Integer.parseInt(Str.charAt(i)) ;但是Str.charAt()返回的是char类型,没有参数为char的parseInt方法;
int m = (int)(Str.charAt(i))这样我也试过了,返回的是ascii

希望知道的同学能帮助我一下,谢谢大家了!

6 个回复

倒序浏览
本帖最后由 由然自美 于 2013-12-29 22:24 编辑

方法1
int i=10;
String s=""+i;
这是利用java的toString机制来做的转换,任何类型在和String相加的时候,都会先转换成String。

方法2
int i=10;
String s=String.valueOf(i);
这是利用String类提供的工厂方法来做的转换。
回复 使用道具 举报
这个你可以通过switch语句,
1.将字符串转换为字符数组
2.通过switch语句将数组内容进行匹配,总共也就0-9 合计10个数
3.将匹配好的数存储到新的byte数组中并返回,那么就得到字符串的每个对应数字了

第二种方法就是先将字符串转换为int型,这个你知道怎么转,
然后通过迭代的方法逐次得到每个位置上的数字,
不过这种方法虽然代码简短了些,但效率没有switch高,
建议使用上面那个,而且可读性更好,迭代有点晕。。。

其他的我就暂时不知道了。。。
回复 使用道具 举报
由然自美 发表于 2013-12-29 22:22
方法1
int i=10;
String s=""+i;

谢谢,很简便的方法很实用:)
回复 使用道具 举报
doitforyou 发表于 2013-12-29 22:24
这个你可以通过switch语句,
1.将字符串转换为字符数组
2.通过switch语句将数组内容进行匹配,总共也就0-9  ...

谢谢你的回答,听你这么一说我不仅解决了这个问题,连那个题目的思路也清晰了。。
回复 使用道具 举报
先还是获取第i位,判断是否是0-9;

是的话就通过 String.valueOf(Str.charAt(i))返回字符串,接着就可以用Integer.parseInt()方法了;

如果不是0-9,是字符的话,只能类型提升转换成对应字符的ascii值.
回复 使用道具 举报 1 0
duanyoujiji 发表于 2013-12-29 23:03
谢谢你的回答,听你这么一说我不仅解决了这个问题,连那个题目的思路也清晰了。。 ...

惭愧,其实这个我当初也很纠结,然后自己摸索着找了两条办法,其实不是很满意,等以后学习深入后估计有更好的办法,刚开始不要急,慢慢学习,学的多了思路就慢慢有了,加油
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马