【发布时间】:2018-02-10 23:52:33
【问题描述】:
我的主要目标是获得一个由数字的位值组成的数组。 例如:如果用户输入是:35779 我想要这个数组:{3, 5, 7, 7, 9} (用户输入可能会发生变化,范围从 10 到 int 的最大可能值。
(int counter是一个int,表示输入数字有多少个位值。例如:当输入为:38557:counter = 5)
ArrayList<Integer> obj = new ArrayList<Integer>();
for(int i = counter-1; i >= 0 ; --i){
int ten2pow = (int)Math.pow(10, i);
int x = input/ten2pow;
obj.add(x);
input = input - x*ten2pow;
}
执行此操作并尝试打印数组时,输出为空数组
编辑:更改 for 循环初始化和终止条件后,循环工作得很好,我能够将 Place 值存储在 ArrayList 中
【问题讨论】:
-
什么是
5 <= 1? -
是否给定了
counter?还是需要自己计算? -
如果他确实需要计算,那他就做错了。最好从最低有效位开始,一直除以 10,直到没有剩余为止。
-
尝试在 for(int i = counter -1; i >= 0 ; i--) 的条件下使用它
-
我个人可能只是让它由正则表达式处理:
int[] components = Arrays.stream(Integer.toString(value).split("(?=\\d)")).mapToInt(Integer::parseInt).toArray();
标签: java arrays for-loop arraylist