我有一个长度为10的'double‘数组,当我第一次初始化这个数组时,里面的所有值都是'0.0’,直到我开始替换它们。一旦我用0以外的值替换了所有的值,我该怎么做呢?如果我决定在数组中“添加”另一个数字,它将从索引0的开始重新开始,并按顺序替换旧的数字。
从事银行账户交易程序的开发。因此,您有一个包含10个事务的数组,所有事务都从0.0开始。然后,当你开始取款或存钱时,它会将取款/存入的金额“记录”到每个插槽中。一旦您完成了第11个事务,就应该返回并替换第一个事务,第12个事务替换第二个事务,依此类推。
编辑:不允许使用数组列表。必须是普通的静态长度数组。
发布于 2012-02-09 00:46:50
这是一个简单的模数问题。Mathy解决方案将如下所示
Wrap = currentArrayPos % arrayLength - 1 //need this since arrays start at 0 and length starts counting at 1.
If Wrap == 1 --> currentArrayPos = 0
Else --> currentArrayPos = currentArrayPos + 1当您替换值时,您将迭代到下一个数组位置并替换值。当您替换了数组中的最后一个值时,模数告诉您循环回到前面并替换第一个值。
简单的Java解决方案是:
for(int i = 0; i < array.length; i++) {
//logic for calculating new values and exit condition goes here.
array[i] = newValue
if(i ==> array.length - 1)
i = 0 //resets the loop to keep going
if(exitCondition)
break; //if there's some criteria, get out. }如果这不是经常发生的事情,那么你可以跟踪你在数组中最后一次替换的位置,然后做模数的事情来确定你是否需要重置。
mre关于使用列表的建议也是值得研究的,但你需要跟踪位置。
发布于 2012-02-09 00:47:59
如果"i“是在每次写入后递增的数组索引,那么当您到达数组边缘时,一个简单的方法是使用模运算符:
int index = 0;
int arraySize = 10;
long[] data = new long[arraySize];
for (int i=0; i<100; i++) {
data[ index++ % arraySize ] = i; // or some other value
}这样,您的数组将以循环方式填充,始终在到达数组边界后再次从索引0开始。
https://stackoverflow.com/questions/9197506
复制相似问题