for(i=0; i<array.length; i++){
sum = 4 * 5;
}
我要做的是添加((array.length - 1) - i)0到sum的值。对于这个例子,假设数组长度是3. sum等于20.因此对于循环的第一次迭代,我想将((3 - 1) - 0)0加到sum的值,所以sum将是2000.下一次迭代将是((3 - 1) - 1)0。总和将等于200,依此类推。我希望我想要实现的目标是明确的。
所以我的问题是:
是否可以只移动一个int来添加额外的数字?到目前为止,我的搜索结果表明它不是。
如果没有,我怎样才能达到预期目标?
感谢您阅读我的问题,任何帮助都会有很大帮助。
答案 0 :(得分:2)
你可以将它乘以10然后多次。
200 * 10 = 2000
等
因此,在您的情况下,您必须使用for循环直到数组结束并且每次迭代乘以sum
。但请注意,因为int
的最大值是2 ^ 31,所以它超过了它,它将回滚到0
答案 1 :(得分:0)
for(int i=array.length; i>0; i--){
sum = 20;
for(int j=0; j < (i - 1); j++)
{
sum *= 10;
}
}
使用内部循环将该次迭代的次数乘以10。您需要每次都在外循环中重置sum。
答案 2 :(得分:0)
乘以10
,然后使用<
(不是>
)
int sum = 20;
int[] array = { 1, 2, 3 };
for (int i = 0; i < array.length; i++) {
int powSum = sum;
for (int j = array.length - 1; j > i; j--) {
powSum *= 10;
}
System.out.println(powSum);
}
输出(按要求)
2000
200
20
答案 3 :(得分:0)
i>array.length
。由于i
从0开始,除非数组的长度也为0(空数组),否则此循环不会运行。正确的条件是i < array.length
。pow(a,b)
函数可以计算 b 。考虑到这一点,你想要的是这样的:int oldSum = 4 * 5;
for (int i = 0; i < array.length; i++) {
int newSum = oldSum * Math.pow(10,i);
}
答案 4 :(得分:0)
对于长度= n 的数组;您最终将分别为 (n - 1) + (n - 2) + ... + 2 + 1 + 0
添加i = 0, 1, ... n-2, n-1
个零。
因此,要追加(z) = n * (n-1) / 2
所以答案是 sum * (10 ^ z)
<强> [编辑] 强> 以上可用于在N次迭代后找到答案。 (我想念这个问题)
int n = array.length;
long sum = 20;
long pow = Math.pow(10, n-1); // for i = 0
for (int i = 0; i < n; i++) {
System.out.println(sum*pow);
pow /= 10;
}
答案 5 :(得分:0)
您可以通过将n
乘以sum
,将sum
个零添加到数字的末尾10 * n
。
int sum = 20;
for (int i = 0; i < ary.length; ++i) {
int zeroesToAdd = ary.length - 1 - i
sum *= (zeroesToAdd > 0) ? zeroesToAdd * 10 : 1
}
System.out.println("Sum after loop: " + sum);