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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李成航 中级黑马   /  2012-3-1 13:54  /  3247 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

遇到这种需求:如我需要将一个字符型1,变为int型1,如:
char c=1;
int i=(int)c;//如果直接强制转换将会是49,而实际上我想得到1

像这种应用:
String s=new String("1234");//我想把字符串中的每个元素加1,变成"2345"
即:
String news=new String("2345");//不知如何实现?


        

评分

参与人数 1技术分 +2 收起 理由
admin + 2

查看全部评分

5 个回复

倒序浏览
楼主你char c = 1;这个1对应键盘上的ascii码是49,楼主baidu一下 ascii码自然就明白了 ,
正确的做法 char c = '1';
  1. String s = new String("1234");
  2. String news = "";
  3. for (int i = 0; i < s.length(); i++) {
  4.         int temp = Integer.parseInt(s.substring(i,i+1));
  5.         news += ++temp;
  6. }
  7. System.out.println(news);
复制代码

评分

参与人数 2技术分 +2 黑马币 +2 收起 理由
admin + 2
李成航 + 2 赞一个!

查看全部评分

回复 使用道具 举报
数据量大的话 建议用StringBuilder , 只是做个Demo的话无所谓了
回复 使用道具 举报
本帖最后由 欧阳博 于 2012-3-1 14:53 编辑

首先  你的“char c=1;” 这个int 1会自动转换成它对应的字符,再赋给c,所以这个c的值是ASCII为1所对应的字符
“int i=(int)c”  你再把字符c强制类型转换为int型,所以i的值是字符c所对应的ASCII值,  这个49是哪来的???
2,
  1. String s1 = new String("1234");
  2.         String s2 = "";
  3.         ArrayList List = new ArrayList(); //创建一个动态数组来接受上面字符串s1的每个字符,
  4.         for(int i=0;i<s1.length();i++)
  5.         {
  6.                 char a = s1.charAt(i);
  7.                 int ia = Integer.parseInt(a+"")+1;
  8.                 List.add(ia);  //把每个字符添加到List集合
  9.         }
  10.         Object[] values = List.toArray();
  11.         for(Object value:values)
  12.         {
  13.                 s2 +=value;  //再把这个数组里的每个元素累加到字符串s2
  14.         }
  15.         System.out.println(s2);//打印
复制代码

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
49是将char型1转换为int型得的。
搞定了,谢谢大家
回复 使用道具 举报
欧阳博 发表于 2012-3-1 14:52
首先  你的“char c=1;” 这个int 1会自动转换成它对应的字符,再赋给c,所以这个c的值是ASCII为1所对应的 ...

汗。网速不行,没看到楼上的,我做的想复杂了,还是2楼好。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马