黑马程序员技术交流社区

标题: 怎么样把数字字符串中提出各位数字 [打印本页]

作者: cheye0207    时间: 2014-7-14 17:41
标题: 怎么样把数字字符串中提出各位数字
String s="123456";
怎么样把每一位都提取出来成为int类型?
望指教!!
作者: 爨庚轩    时间: 2014-7-14 17:44
Integer.paserInt(String str);
作者: cheye0207    时间: 2014-7-14 17:48
爨庚轩 发表于 2014-7-14 17:44
Integer.paserInt(String str);

我想要的是每一位,1,2,3,这样的
作者: ☆枫の云    时间: 2014-7-14 18:02
先把字符串变成字符数组,然后再遍历强转就行了。
作者: cheye0207    时间: 2014-7-14 18:04
☆枫の云 发表于 2014-7-14 18:02
先把字符串变成字符数组,然后再遍历强转就行了。

这个有试过,强转出来的是对应的ASCII码。。。。
作者: cheye0207    时间: 2014-7-14 18:05
本帖最后由 cheye0207 于 2014-7-14 18:10 编辑
☆枫の云 发表于 2014-7-14 18:02
先把字符串变成字符数组,然后再遍历强转就行了。

这个有试过,强转出来的是对应的ASCII码
作者: cheye0207    时间: 2014-7-14 18:10
☆枫の云 发表于 2014-7-14 18:02
先把字符串变成字符数组,然后再遍历强转就行了。

1强转出来是49
作者: fantacyleo    时间: 2014-7-14 18:28
cheye0207 发表于 2014-7-14 18:10
1强转出来是49
  1. String s = "1234";
  2. int x;
  3. for(int i = 0; i < s.length(); i++) {
  4.         x = s.charAt(i) - '0';
  5.         // do something with x
  6. }
复制代码

作者: 黎志勇    时间: 2014-7-14 18:31
各个字符与字符'0'的差就是对应的int值了
  1. package test;

  2. import java.util.Arrays;

  3. public class Test9 {
  4.         public static void main(String[] args) {
  5.                 print(getInts("0123456asdfdf2243434"));
  6.         }

  7.         public static int[] getInts(String string) {
  8.                 char[] chars = string.toCharArray();
  9.                 int[] ints = new int[string.length()];
  10.                 int count = 0;
  11.                 for (int i = 0; i < chars.length; i++) {
  12.                         if (chars[i] >= '0' && chars[i] <= '9') {
  13.                                 ints[count++] = chars[i] - '0';// 各个字符与字符'0'的差就是对应的int值了。
  14.                         }
  15.                 }
  16.                 return Arrays.copyOf(ints, count);
  17.         }

  18.         public static void print(int[] ints) {
  19.                 for (int i : ints) {
  20.                         System.out.print(i + " ");
  21.                 }
  22.                 System.out.println();
  23.         }
  24. }
复制代码




作者: 爨庚轩    时间: 2014-7-14 19:44
本帖最后由 爨庚轩 于 2014-7-14 19:46 编辑
cheye0207 发表于 2014-7-14 17:48
我想要的是每一位,1,2,3,这样的

o.o   for循环啊  唉   
for (int i=0; i<s.length(); i++){
        System.out.println(Integer.parseInt(s.charAt(i)+""));
}
作者: cheye0207    时间: 2014-7-14 19:57
黎志勇 发表于 2014-7-14 18:31
各个字符与字符'0'的差就是对应的int值了

嗯,这个好!!谢谢
我用的是先强转成整数,再模以10,可惜顺序是反的,而且0在最前面就不行了
作者: 黎志勇    时间: 2014-7-14 20:05
cheye0207 发表于 2014-7-14 19:57
嗯,这个好!!谢谢
我用的是先强转成整数,再模以10,可惜顺序是反的,而且0在最前面就不行了 ...

嗯,我考虑到里面可能有其他非数字字符,所以就那样写了。
作者: cheye0207    时间: 2014-7-14 20:16
fantacyleo 发表于 2014-7-14 18:28

嗯,谢谢!!这都想不起来了。。。
作者: flyidea    时间: 2014-7-14 22:09
char a[]=str.toCharArray();
把字符串转进字符数组,循环输出
for(int i=0;i<a.length;i++)
{
System.out.println(a[i]+",");
}
作者: 韩天雷    时间: 2014-7-14 22:12
方法太多~




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