我正在尝试将像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;
}
任何想法如何实现这一目标?
答案 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 -----数组
开始