黑马程序员技术交流社区

标题: 关于数字型字符串与整数的转换问题 [打印本页]

作者: 李成航    时间: 2012-3-1 13:54
标题: 关于数字型字符串与整数的转换问题
遇到这种需求:如我需要将一个字符型1,变为int型1,如:
char c=1;
int i=(int)c;//如果直接强制转换将会是49,而实际上我想得到1

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


        


作者: 丁晓宇    时间: 2012-3-1 14:18
楼主你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);
复制代码

作者: 丁晓宇    时间: 2012-3-1 14:20
数据量大的话 建议用StringBuilder , 只是做个Demo的话无所谓了
作者: 欧阳博    时间: 2012-3-1 14:52
本帖最后由 欧阳博 于 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);//打印
复制代码

作者: 李成航    时间: 2012-3-1 14:56
49是将char型1转换为int型得的。
搞定了,谢谢大家
作者: 欧阳博    时间: 2012-3-1 14:59
欧阳博 发表于 2012-3-1 14:52
首先  你的“char c=1;” 这个int 1会自动转换成它对应的字符,再赋给c,所以这个c的值是ASCII为1所对应的 ...

汗。网速不行,没看到楼上的,我做的想复杂了,还是2楼好。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2