字符串,是数组中的数字

时间:2014-09-04 19:10:28

标签: java

我正在尝试将像123456789这样的大数字的字符串拆分为像[1,2,3,4,5,6,7,8,9]这样的int数组,但是遇到了一些麻烦。应该很简单,但我的输出很时髦。这是我到目前为止:

public static boolean swap(String cc){
    boolean isvalid = false;
    int [] num = new int[cc.length()];
    for(int i = 1; i < cc.length(); i++){
        num [i] = Integer.parseInt(cc.substring(0, 1));
    }


    for(int x=0;x<num.length;x++){
        System.out.println(num[x]);
    }
    return isvalid;
}

任何想法如何实现这一目标?

4 个答案:

答案 0 :(得分:2)

您需要替换以下行:

num [i] = Integer.parseInt(cc.substring(0, 1));

使用:

num [i] = Integer.parseInt(cc.substring(i, i+1));

如果你想迭代字符。否则你会一遍又一遍地选择相同的角色。

答案 1 :(得分:2)

有更简洁的方法可以做到这一点,但是如果你已经开始使用你的方法了,那么你需要修复一些错误才能解决这个问题:

  • for循环索引从0开始时,它从1开始。
  • 在循环中,您反复只是解析字符串的第一个字符。因此,您应该这样做:

 for(int i = 0; i < cc.length(); i++){
     num [i] = Integer.parseInt(cc.substring(i, i+1));
 }

这样,您将访问字符串中的连续字符。


作为次要的旁注,我不明白这个功能的意义所在。您所做的就是将字符串中的数字拆分为数组中的单独元素,但您似乎不会对此输出执行任何其他操作。

答案 2 :(得分:1)

解决方案太多了。您可以考虑采用不同的方法:

for (int c : cc) {
    num[i] = (c - 48)
}

它的工作原理是因为我们可以将String作为char循环遍历。并且char可以很容易地转换为int。 在16位Unicode表中,0-9来自48-57 - 这意味着如果您的char在该范围内,您只需减去48即可获得该数字。

答案 3 :(得分:1)

使用以下代码编辑您的第一个循环

for(int i = 0; i < cc.length(); i++){
 num [i] = Integer.parseInt(cc.substring(i, i+1));
}
  

注意:我应该从 0 -----数组

开始